15

私たちは何ヶ月も実稼働環境でエンティティ フレームワークを使用してきましたが、昨日、DbContext のサブクラスを使用してデータベースにクエリを実行すると、一部のマシンでエラーが発生し始めました。

「アプリケーションの構成ファイル内の接続文字列 'MyConnectionString' に、必要な providerName 属性が含まれていません」

私たちの問題は簡単に解決され"providerName="System.Data.SqlClient"ます。展開されたすべてのサーバーとワークステーションの構成ファイルの接続文字列に を追加します。

ただし、謎は残っています:ドキュメントによると:

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

さらに不可解なのは、これが突然発生し始めた理由であり、どうやら一部のマシンでのみ発生したようです。EF または .NET バージョンの最近の変更、SQL Server のバージョンまたはプロバイダーの変更などについては知りません。しかし、私は見落としている何かがあるに違いないことに気づきました。

.NET 4.5 EF 5.0

誰にもヒントや洞察がありますか?

4

2 に答える 2

15

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

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

ただし、プロバイダー名を明示的に指定しても問題はありません。追加しても問題ないはずです。接続文字列に余分な文字がいくつかあるだけです。今後も変更する必要はありません。

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

<connectionStrings>
  <add
    name="MyConnectionStringName"
    connectionString="Connection string goes here"
    providerName="System.Data.SqlClient" />
</connectionStrings>
于 2015-01-09T04:13:33.117 に答える
4

あなたも使うことができます:

providerName="System.Data.EntityClient"

それから:

<add name="name_here" connectionString="Data Source="pathofdatabase" providerName="System.Data.EntityClient" />
于 2016-10-05T00:11:50.353 に答える