我使用实体框架和ASP。NET MVC 4构建应用程序

我的解决方案分为两个项目;

一个类库,其中包括我的数据模型(.edmx)文件和一些自定义接口 引用上面类库的“容器”MVC项目

我的问题是,当我试图使用'MyEntites' DbContext时,我得到以下错误:

中找不到名为“MyEntities”的连接字符串 应用程序配置文件。

我猜这个问题与连接字符串位于类库的app.config而不是MVC项目的事实有关。

有人有什么建议吗?


当前回答

我通过没有将项目设置为启动来得到这一点,正如另一个答案所示。我对此的贡献-当做Add-Migrations和Update-Database时,在Nuget Package Manager Console中指定启动项目作为命令的一部分(不包括'['或']'字符,这只是为了告诉你你需要将位于那里的文本更改为你的项目名称):

Enable-Migrations Add-Migrations -StartupProject[包含数据上下文类的项目名称] Update-Database -StartupProject[与上面的项目名称相同]

这样就行了。

其他回答

@RyanMann在上面的回答下评论道:

将连接字符串存储在一个配置文件中,然后通过<connectionString configSource="../ProjectDir/SharedConnections "在其他项目中引用它们。配置" / >

这是一个很棒的建议!

它还可以在App.config和Web之间共享连接字符串。配置文件!

任何想要遵循这个建议的人,都应该去看看这个SO答案。 它有一个关于在解决方案中的多个项目之间共享连接字符串的非常棒的分步指南。

唯一需要注意的是,configSource必须存在于同一目录或子目录中。上面的链接解释了如何使用“添加为链接”来解决这个问题。

这也可能导致在调用代码中没有引用足够的dll引用。一个小小的笨拙的hack可以挽救你的一天。

我遵循DB First方法,并在DAL类库项目中创建了EDMX文件,这是对BAL类库的引用,而BAL类库又由WCF服务引用。

由于我在BAL中得到这个错误,我尝试了上面提到的方法从DAL项目的App.config复制配置细节,但没有解决。最终,在一个朋友的建议下,我只是添加了一个虚拟的EDMX文件到WCF项目(与相关的DB Connectivity等),所以它导入了所有必要的东西,然后我只是删除了EDMX文件,它只是摆脱了一个干净的构建问题。

如果您正在使用MVVM模型,请尝试将连接字符串复制到项目的所有部分。

例如,如果您的解决方案包含两个项目,类库项目和wpf项目,您必须复制后端项目(库类项目)的连接字符串,并将副本放在wpf项目的App.config文件中。

<connectionStrings>
  <add name="DBEntities" ... />
</connectionStrings>

希望对你有帮助:)

如果你在解决方案中有多个项目,那么在你有真理App.config的地方开始安装项目。

在web中添加Connectoinstrnig。配置文件

<ConnectionStiring> <add name="dbName" Connectionstring=" include provider name too"  ></ConnectionStiring>