2

我需要将连接字符串传递给实体对象构造函数(不能存储在配置中)。

我已成功使用 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"
4

1 回答 1

0

您不必设置外部providerName- 您只需connectionString从 web.config 复制条目。

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

于 2013-01-17T13:11:20.813 回答