代码优先:连接字符串&数据库?

时间:2011-10-08 14:55:27

标签: ef-code-first

我正在测试代码的首次运行方式。这是我定义上下文的方式

public class EfDbContext: Context
{
  public DbSet<Client> Clients { get; set; }
}

我没有创建任何数据库,但我能够完成所有CRUD操作。

现在我在web.config中看不到连接字符串。我没有看到数据库。我已经检查了App_Data目录以及Sql Server Express。我没有看到任何创建数据库的痕迹。

然而,一切都很完美。

1 个答案:

答案 0 :(得分:4)

EF代码优先使用与数据库上下文同名的连接字符串 - 所以您可以这样定义:

<connectionString>
   <add name="EfDbContext" 
        connectionString="server=YourServer;database=YourChoice;Integrated Security=SSPI;" />
</connectionString>

默认情况下不会创建数据库,直到您实际执行某些操作,例如它应该在您第一次拨打EfDbContext.SaveChanges()时立即显示。

如果您没有定义自己的自定义连接字符串,它将被调用与您的数据库上下文(YourNamespace.EfDbContext)相同,并且它应该显示在您的默认本地SQL实例中。

请参阅ADO.NET EF 4.1 Code First Walkthrough

  

我的数据在哪里?

     按照惯例,

DbContext为您创建了一个数据库   本地主机\ SQLEXPRESS。数据库以完全限定的名称命名   您的派生上下文的名称,在我们的例子中是   “CodeFirstSample.ProductContext”。我们将研究改变这种情况的方法   稍后在演练中。