asp.net-mvc-3 – 实体框架 – 连接字符串 – 不支持关键字’数据源’

我知道这是EF初学者面临的一个常见问题,这里有多个问题和答案,但我仍然无法解决这个问题.

我正在使用EF 4.1和MVC 3,并在单独的库中从DB生成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=&quot;Data Source=.;Initial Catalog=MasterData;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

我收到错误“不支持关键字:数据源”.
对此有任何帮助表示赞赏.

最佳答案 您不需要EntityConnectionStringBuilder,因为您已经有EF连接字符串.即只是

string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MasterDataContainer"].ConnectionString;
context = new MasterDataContainer(connectionString);

EntityConnectionStringBuilder可用于建立例如EF连接.一个香草.NET.

编辑
看起来你遇到了这个问题here.解决方法是逃避加载连接字符串,然后替换& quot;用“’”

可能更容易的是使用ObjectContext / DbContext的name=ConnStringName重载.在你的情况下,这将是

context = new MasterDataContainer("name=MasterDataContainer");

另请注意,如果您查看生成的Context(可能是MasterDataContainer.Context.cs)的源,默认构造函数应该将EntityContainerName属性硬编码到其中,那么您可能根本不需要为构造函数提供连接字符串,前提是您保持相同的EntityContainerName.

http://msdn.microsoft.com/en-us/library/bb739017.aspx

点赞