代码优先:连接字符串和数据库在哪里?
问题描述:
我正在测试代码如何工作。以下是我如何定义上下文的方法代码优先:连接字符串和数据库在哪里?
public class EfDbContext: Context
{
public DbSet<Client> Clients { get; set; }
}
我没有创建任何数据库,但是我能够执行所有CRUD操作。
现在我没有看到我的web.config中的连接字符串。我没有看到数据库。我已经检查了App_Data目录以及Sql Server Express。我没有看到任何创建的数据库的痕迹。
然而,一切都是完美的。
答
EF代码优先将使用具有相同的名称为您的数据库上下文的连接字符串 - 所以你可以这样定义它:
<connectionString>
<add name="EfDbContext"
connectionString="server=YourServer;database=YourChoice;Integrated Security=SSPI;" />
</connectionString>
该数据库将不会被默认创建的,直到你实际上做一些事情,例如它应该在您第一次拨打EfDbContext.SaveChanges()
时立即出现。
如果您尚未定义自己的自定义连接字符串,并且它应显示在默认本地SQL实例中,它将与您的数据库上下文(YourNamespace.EfDbContext
)相同。
从ADO.NET EF 4.1 Code First Walkthrough见:
哪里是我的数据?
的DbContext通过公约 本地主机\ SQLEXPRESS创建的数据库为您服务。数据库以派生上下文的标准 名称命名,在我们的示例中为 “CodeFirstSample.ProductContext”。稍后将在演练中讨论如何更改此 。