我使用实体框架和ASP。NET MVC 4构建应用程序
我的解决方案分为两个项目;
一个类库,其中包括我的数据模型(.edmx)文件和一些自定义接口 引用上面类库的“容器”MVC项目
我的问题是,当我试图使用'MyEntites' DbContext时,我得到以下错误:
中找不到名为“MyEntities”的连接字符串 应用程序配置文件。
我猜这个问题与连接字符串位于类库的app.config而不是MVC项目的事实有关。
有人有什么建议吗?
我使用实体框架和ASP。NET MVC 4构建应用程序
我的解决方案分为两个项目;
一个类库,其中包括我的数据模型(.edmx)文件和一些自定义接口 引用上面类库的“容器”MVC项目
我的问题是,当我试图使用'MyEntites' DbContext时,我得到以下错误:
中找不到名为“MyEntities”的连接字符串 应用程序配置文件。
我猜这个问题与连接字符串位于类库的app.config而不是MVC项目的事实有关。
有人有什么建议吗?
当前回答
正如您所猜测的,这与类库的app.config中的连接字符串有关。
将类app.config中的条目复制到容器的app.config或web中。配置文件
其他回答
定期迁移
有两个选项——这里每个人都建议的第一个选项是确保连接字符串在Web中。项目配置文件。当使用来自Azure应用程序设置的连接字符串时,这意味着要重写Web。配置值与Azure值。
Azure或自动迁移(编程式)
如果你以编程方式运行迁移,还有第二个选项可用,它允许你使用动态获得的连接字符串(或通过Azure应用程序设置)运行迁移,而不将其存储在Web.config中:
在设置配置的TargetDatabase时,使用DbConnectionInfo构造函数,它接受一个连接字符串和一个提供者名称,而不是只接受一个连接名称的构造函数。如果您的连接字符串没有提供商名称,并且您使用的是SQL Server / Azure SQL,则使用"System.Data.SqlClient"
确保你已经在启动项目的ROOT web.config中放置了连接字符串。
I know I'm kinda stating the obvious here, but it happened to me too - though I already HAD the connection string in my MVC project's Web.Config (the .edmx file was placed at a different, class library project) and I couldn't figure out why I keep getting an exception... Long story short, I copied the connection string to the Views\Web.Config by mistake, in a strange combination of tiredness and not-scrolling-to-the-bottom-of-the-solution-explorer scenario. Yeah, these things happen to veteran developers as well :)
如果您正在使用MVVM模型,请尝试将连接字符串复制到项目的所有部分。
例如,如果您的解决方案包含两个项目,类库项目和wpf项目,您必须复制后端项目(库类项目)的连接字符串,并将副本放在wpf项目的App.config文件中。
<connectionStrings>
<add name="DBEntities" ... />
</connectionStrings>
希望对你有帮助:)
在web中添加Connectoinstrnig。配置文件
<ConnectionStiring> <add name="dbName" Connectionstring=" include provider name too" ></ConnectionStiring>
在根web中添加一个连接字符串。'container' MVC项目的配置文件引用类库如下:
<connectionStrings>
<add name="MyEntities" connectionString="complete connection string here" providerName="System.Data.SqlClient" />
</connectionStrings>
如果你不想使用“MyEntities”作为连接名,那么按照你的愿望更改它,但在你的MyEntities DbContext类中做以下更改:
MyEntities: DbContext
{
public MyEntities():base("Name-Of-connection-string-you wish to connect"){ }
}
这个错误的原因是,如果我们没有在DbContext的派生类中指定连接字符串或连接字符串的名称(在您的情况下是MyEntities),那么DbContext将自动在根web中搜索连接字符串。配置文件,其名称与派生类名称相同(在您的情况下,它是My Entities)。