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

アウターを設定する必要はありません。web.configからエントリproviderNameを複製するだけです。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;

コードファーストを使用している場合は、SQL接続文字列が必要です。

この質問を参照してください:エンティティフレームワークコードファーストと接続文字列の問題

于 2013-01-17T13:11:20.813 に答える