我一直在使用代码优先 Entity Framework 。我在 web.config 中定义了一个连接,其名称与我的 DbContext 的类名匹配(在本例中为“MyDbContext”)。
当数据库存在时,EF 使用此连接不会出现任何问题。
但是,如果我删除数据库(以强制 EF 重新创建它),EF 则会在本地 Sql Express 服务器上创建数据库。
如果我在 DbContext 类构造函数中指定完整的连接字符串,例如
public class ReykerSCPContext : DbContext
{
public ReykerSCPContext() :
base("Server=tcp:MyDBSErver.database.windows.net,1433;Database=MyDB;User ID=#######;Password=#######;Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True;PersistSecurityInfo=True;") { }
}
然后数据库就在选择的服务器上正确创建了。太棒了!
谁能告诉我这是否是正确的行为,因为我正在绞尽脑汁。我希望这一切都可以从 web.config 开始工作,所以我不需要重建并记住更改代码等中的设置。
最佳答案
这应该可以做到:
public class EFDbContext : DbContext {
public EFDbContext() : base("EFDbContext") {
}
public DbSet<Product> Products { get; set; }
}
您应该在 web.config 中拥有上下文类名称的连接字符串,这样就可以了。 web.config 应该位于根目录中。
<connectionStrings>
<add name="EFDbContext" connectionString="Data Source = .; Initial Catalog = ITSDB; Integrated Security = true" providerName="System.Data.SqlClient"/>
</connectionStrings>
关于sql - 代码优先 Entity Framework 在初始化时不拾取 web.config 连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10124101/