【问题标题】:Code-first Entity Framework not picking up web.config connection string when initializing代码优先实体框架在初始化时未获取 web.config 连接字符串
【发布时间】:2012-04-24 19:55:23
【问题描述】:

我一直在使用代码优先的实体框架。我在 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 中运行,所以我不需要重新构建并记住更改代码中的设置等。

【问题讨论】:

  • 我相信这是正常的,EF默认转到本地sql实例。我将不得不启动我的一个项目来检查。您可以在 Julie Lerman 上进行谷歌搜索,并查看她的博客/视频,了解 EF 代码的首次行为方式以及如何更改它。
  • 我无法重现此行为。数据库是否存在,是否正在使用配置中的 connectionString。您是否尝试过(作为一种解决方法)将连接字符串名称传递给 DbContext ctor(例如 base("name={Your connection string}")?如果不尝试是否有效。另外,您使用的是什么版本的 EF?跨度>
  • 您的构造函数 MyDbContext 的名称与您的类名 ReykerSCPContext 不同,是这个问题吗?
  • 很好看。我的实际代码是正确的。我会更新问题。
  • 根据您的描述,似乎存在一些错误配置,并且应用程序可能始终连接到默认的本地主机服务器。你能从你的 web.config 或 app.config 中发布相关的 connectionString sn-p 吗?

标签: sql entity-framework-4 ef-code-first


【解决方案1】:

如果你这样做了

update-database -v 

它显示它正在使用 IIS express 实例而不是来自 Web.Config 的值,这意味着当本地 IIS express 实例正在运行时,EF 会感到困惑。

我遇到了同样的问题,并通过停止/删除 IIS express 得到了解决。

"sqllocaldb.exe stop v11.0"

"sqllocaldb.exe delete v11.0” 

希望对某人有所帮助!

【讨论】:

    【解决方案2】:

    应该这样做:

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 2020-01-13
      • 2015-04-09
      • 1970-01-01
      • 2011-09-28
      • 2012-03-03
      • 1970-01-01
      相关资源
      最近更新 更多