我知道这是 EF 初学者面临的一个常见问题,这里有多个问题和答案,但我仍然无法解决这个问题。
我正在使用 EF 4.1 和 MVC 3,并在单独的库中从数据库生成了 EF 模型。我已将连接字符串从支持库中的 app.config 复制到我的应用程序的 web.config。我还通过传递 web.config 连接字符串来实例化对象上下文。
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MasterDataContainer"].ConnectionString;
context = new MasterDataContainer(connectionString);
web.config 中的连接字符串如下
<connectionStrings>
<add name="MasterDataContainer" connectionString="metadata=res://*/MasterData.csdl|res://*/MasterData.ssdl|res://*/MasterData.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.;Initial Catalog=MasterData;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
我收到错误“不支持关键字:数据源”。
对此的任何帮助表示赞赏。
最佳答案
您不需要 EntityConnectionStringBuilder
因为您已经有一个 EF 连接字符串。即只是
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MasterDataContainer"].ConnectionString;
context = new MasterDataContainer(connectionString);
EntityConnectionStringBuilder
可用于建立 EF 连接,例如一个 Vanilla .NET。编辑
您好像遇到过这个问题 here .解决方法是逃避加载连接字符串,然后替换
"
与 "'"
更容易的是使用
name=ConnStringName
ObjectContext/DbContext 的重载。在你的情况下,这将是context = new MasterDataContainer("name=MasterDataContainer");
另请注意,如果您查看生成的 Context 的源(可能是
MasterDataContainer.Context.cs
),默认构造函数应该将 EntityContainerName 属性硬编码到其中,因此您可能根本不需要向构造函数提供连接字符串,前提是您保留相同的实体容器名称。http://msdn.microsoft.com/en-us/library/bb739017.aspx
关于asp.net-mvc-3 - Entity Framework - 连接字符串 - 不支持关键字 'Data Source',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12104036/