2013-09-04 14 views
11

私たちは今、何ヶ月もの間、本番環境でのエンティティフレームワークを使用してきた、と昨日はDbContextの私達のサブクラスを使用してデータベースを照会するとき一部マシン上のエラーを取得するために開始しました:Entity Framework:接続文字列の "ProviderName"が必要です - 突然ですか?

「接続文字列をアプリケーションの 設定ファイルの「MyConnectionStringは、」必要なproviderNameで 属性」が含まれていません

私たちの問題は簡単に解決されています。私はすべてのD上の設定ファイル内の接続文字列に"providerName="System.Data.SqlClient"を追加雇用されたサーバーとワークステーション。

しかし、謎は残っています:the documentationに従って:

providerNameで属性はオプションであり、デフォルトは "System.Data.SqlClientの" です。

なぜこれが突然起き始めたのか、そして明らかにいくつかのマシンでのみ起こったのはなぜか不思議なことです。私は、EFまたは.NETのバージョン、SQL Serverのバージョンまたはプロバイダの変更などの最近の変更については認識していません。しかし、私が見落としたことがなければならないことが分かっています。

.NET 4.5 EF 5.0

誰もが任意のヒントや洞察力を持っていますか?

+0

私がインストールされたら、私の開発マシンは私にこれを行うために始めました異なるプロジェクト用のMySQL ADO.NETコネクタ...しかし、MySQLはmachine.configファイルに自身を追加するようです。私は、System.Data.SqlClientがデフォルトであると仮定しただけです。設定されたエンティティフレームワークプロバイダが1つだけの場合、オプションであると言うのがより正確です。 – dannykay1710

答えて

8

ドライバの組み合わせによっては、使用するドライバがあいまいな状態になるため、明示的なプロバイダ名が必要です。

おそらく別のアプリケーションまたはドライバのインストール、または実行された自動Windows Updateでした。

プロバイダ名を明示的に指定しても問題はありません。あなたはそれを加えても問題ありません。接続文字列には余分な文字しかありません。将来的に変更する必要はありません。

更新された宣言は次のようになります。

<connectionStrings> 
    <add name="<My connection string name>" connectionString="<Connection string proper>" providerName="System.Data.SqlClient" /> 
</connectionStrings> 
+1

こんにちは、愚かな質問を申し訳ありません。しかし、ここでは正確にproviderNameの意味は何ですか?それは名前空間ですか?特定のドライバ/ DLLを参照していますか? – SteveB

+1

この場合、プロバイダは一般的にドライバとほぼ同じです。 –

2

あなたはあまりにも使用することができます。

providerName="System.Data.EntityClient" 

を、その後:

<add name="name_here" connectionString="Data Source="pathofdatabase" providerName="System.Data.EntityClient" /> 
関連する問題