我使用 EntityFramework 代码优先方法创建了简单的 ASP.NET MVC4 应用程序。实体类如下:
public class Album
{
[Key]
public int AblumId { get; set; }
public decimal Price { get; set; }
public string Title { get; set; }
}
public class MusicContext : DbContext
{
public DbSet<Album> Albums { get; set; }
}
web.config
连接细节如下
<connectionStrings>
<add name="MusicContext" connectionString="Data Source=localhost;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
应用程序运行良好,我可以添加、删除、编辑相册记录,但找不到数据库。当我使用 SSMS 检查 SQL Server 实例时,没有创建数据库。我没有在 web.config 中指定“初始目录”值 (DBName),也没有在代码中创建上下文期间给出 DBname。我什至在运行时检查了数据库名称,但它返回空字符串,如下面的屏幕截图所示。我什至检查了 SQL Express,那里没有创建任何数据库,甚至在我的其他实例上也没有。那么我在哪里可以找到自动创建的数据库。我确信数据库存储在某个地方,因为记录的存储和检索没有任何错误。
最佳答案
如果您不指定数据库名称,则连接将使用用户的默认数据库,在这种情况下它是集成安全性,因此它是您的 Windows 登录名。由于您可能在服务器上拥有完整的系统管理员,因此默认数据库将为 master
,因此您会在其中找到所有表。
为了进一步说明,master
是一个系统数据库,因此,要在 SSMS 中查看它,您需要导航到 Server
-> Databases
-> 系统数据库
。
要解决此问题,您可以:
- 在连接字符串中指定数据库名称。
- 为您的用户更改默认数据库。
不过,我建议指定数据库名称,除非您需要为登录动态更改数据库,否则最好明确说明此类事情。
关于c# - 无法找到自动创建的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30980437/