我使用实体框架和ASP。NET MVC 4构建应用程序
我的解决方案分为两个项目;
一个类库,其中包括我的数据模型(.edmx)文件和一些自定义接口 引用上面类库的“容器”MVC项目
我的问题是,当我试图使用'MyEntites' DbContext时,我得到以下错误:
中找不到名为“MyEntities”的连接字符串 应用程序配置文件。
我猜这个问题与连接字符串位于类库的app.config而不是MVC项目的事实有关。
有人有什么建议吗?
我使用实体框架和ASP。NET MVC 4构建应用程序
我的解决方案分为两个项目;
一个类库,其中包括我的数据模型(.edmx)文件和一些自定义接口 引用上面类库的“容器”MVC项目
我的问题是,当我试图使用'MyEntites' DbContext时,我得到以下错误:
中找不到名为“MyEntities”的连接字符串 应用程序配置文件。
我猜这个问题与连接字符串位于类库的app.config而不是MVC项目的事实有关。
有人有什么建议吗?
当前回答
定期迁移
有两个选项——这里每个人都建议的第一个选项是确保连接字符串在Web中。项目配置文件。当使用来自Azure应用程序设置的连接字符串时,这意味着要重写Web。配置值与Azure值。
Azure或自动迁移(编程式)
如果你以编程方式运行迁移,还有第二个选项可用,它允许你使用动态获得的连接字符串(或通过Azure应用程序设置)运行迁移,而不将其存储在Web.config中:
在设置配置的TargetDatabase时,使用DbConnectionInfo构造函数,它接受一个连接字符串和一个提供者名称,而不是只接受一个连接名称的构造函数。如果您的连接字符串没有提供商名称,并且您使用的是SQL Server / Azure SQL,则使用"System.Data.SqlClient"
其他回答
在web中添加Connectoinstrnig。配置文件
<ConnectionStiring> <add name="dbName" Connectionstring=" include provider name too" ></ConnectionStiring>
添加ConnectionString到MVC项目Web。配置文件
确保你已经在启动项目的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 :)
是的,这很愚蠢。使用连接构建器可以避免复制连接字符串。VB。Net代码(在生产中使用,但在这里略有修改,因此视为未经测试,乐意协助解决任何问题),其中我有一个serverName变量,一个databaseName变量,我将它们传递到一个方法,并让它为我生成连接:
Dim EfBuilder As New System.Data.EntityClient.EntityConnectionStringBuilder("metadata=res://*/VMware.VmEf.csdl|res://*/VMware.VmEf.ssdl|res://*/VMware.VmEf.msl;provider=System.Data.SqlClient;provider connection string=""data source=none;initial catalog=none;integrated security=True;multipleactiveresultsets=True;App=EntityFramework""")
Dim SqlBuilder As New Data.SqlClient.SqlConnectionStringBuilder(EfBuilder.ProviderConnectionString)
SqlBuilder.DataSource = serverName
SqlBuilder.InitialCatalog = databaseName
EfBuilder.ProviderConnectionString = SqlBuilder.ConnectionString
Using vmCtx As New VmEfConn(EfBuilder.ConnectionString)
我在运行MSTest时遇到了这个问题。如果没有“不隔离”的标志,我就无法让它工作。
希望这能帮助到一些人。花了我很多时间才弄明白。在IDE中一切都运行正常。在这个上下文中,实体框架有些奇怪。