【问题标题】:Entity Framework DbContext Connection string in app.config/web.config not being seen未看到 app.config/web.config 中的实体框架 DbContext 连接字符串
【发布时间】:2012-06-02 01:55:59
【问题描述】:

所以,我按照 ADO.NET 团队博客中的指示尝试制作一个小型测试项目。 我已经仔细检查了一切。它似乎不起作用并一直说连接字符串丢失。

http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx

步骤。 1 构建这个 UserModels.dll。在dll,App.Config文件中,edmx生成了这个连接字符串:(制作时点击'test'按钮,连接成功,并生成'UserDatabase'所有表的edmx图)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="UserModelsContainer" connectionString="metadata=res://*/UserModels.csdl|res://*/UserModels.ssdl|res://*/UserModels.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MyDesktop\SQL2008;initial catalog=UserDatabase;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

第 2 步。 然后我做了一个测试项目:

class UnitTetst1 ....
TestMethod1()....
using (var db = new UserModelsContainer()) {
  int i = db.Users.Count(); // <---expecting '0' for a new db, but I get an exception
}

---------这里有问题-----

第 3 步。运行测试。然后我得到一个像这样的错误 InvalidOperationException:

"No connection string named 'UserModelsContainer' could be found in the application config file."

似乎 DbContext 不知道从 App.Config 中获取连接字符串的位置??

请帮忙~~

【问题讨论】:

  • 注意:这适用于所有类型的EF、代码优先、数据库优先、模型优先。帮助我解决了 Code-First 问题。

标签: entity-framework ef-code-first dbcontext database-first


【解决方案1】:

运行程序时,读取的是正在运行的 .exe 文件的 app.config。 .dll 的 app.config 从未使用过。由于 UserModel.dll 是一个 dll,因此您必须在某个地方运行一个 .exe(或网站)。将连接字符串放在该 exe 的 app.config 中(或者如果它是 web.config 中的网站)。

【讨论】:

  • 谢谢!修复。我所做的是在测试项目中,添加新项目... -> App.Config -> 作为链接。现在完美运行。
  • 这就是为什么阅读和重读我们一开始没有得到的东西是完全有意义的。感谢令人敬畏的顶部,在 web 应用程序 web.config 中添加连接字符串修复它......从来不知道。
【解决方案2】:

当我尝试从“包管理器控制台”执行更新数据库命令时遇到了这个问题。我有一个单独的项目用于我的代码优先数据访问层和另一个用于我的 Web 项目等

我正在使用以下命令:"update-database -projectname MYPROJECTDANAME -CONNECTIONSTRINGNAME CONNECTIONSTRING -Force"

所以它指向我的 MYPROJECTDANAME 项目,但是它从您指定的启动项目中获取连接字符串名称。因此,请确保您标记为启动项目的项目具有所需的连接字符串。

【讨论】:

    猜你喜欢
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 2013-03-04
    相关资源
    最近更新 更多