我需要将连接字符串传递给Entity对象构造函数(不能存储在config中)。
我已成功使用EntityConnectionStringBuilder连接到数据库,但相信因为它不允许我添加providerName="System.Data.EntityClient"
(只有提供者属性> provider="System.Data.SqlClient
“)不允许我更新数据库
如何将它与字符串构建器中的连接字符串一起传递给构造函数。
我的连接字符串与此
基本相同connectionString="metadata=.\AdventureWorks.csdl|.\AdventureWorks.ssdl|.\AdventureWorks.msl;
provider=System.Data.SqlClient;provider connection string='Data Source=localhost;
Initial Catalog=AdventureWorks;Integrated Security=True;Connection Timeout=60;
multipleactiveresultsets=true'" providerName="System.Data.EntityClient"
答案 0 :(得分:0)
您不必设置外部providerName
- 您只需要从web.config复制connectionString
条目。
var sqlBuilder = new SqlConnectionStringBuilder();
...
var entBuilder = new EntityConnectionStringBuilder();
entBuilder.ProviderConnectionString = sqlBuilder.ConnectionString;
entBuilder.Provider = "System.Data.SqlClient";
entBuilder.Metadata = "res://...";
using ( var db = new AdventureWorksContext( entBuilder.ConnectionString ) )
{
...
此外,您的metadata
配置看起来很奇怪。我一直使用这种格式:
metadata=res://*/AdventureWorks.csdl|res://*/AdventureWorks.ssdl|res://*/AdventureWorks.msl;
如果您使用的是Code First,则只需要SQL连接字符串。
请参阅此问题:Entity Framework Code First and Connection String Issue