web-dev-qa-db-ja.com

プロバイダーはProviderManifestToken文字列Entity Frameworkを返しませんでした

データベースからプロバイダー情報を取得中にエラーが発生しました。これは、Entity Frameworkが誤った接続文字列を使用していることが原因である可能性があります。詳細については内部例外を確認し、接続文字列が正しいことを確認してください。

内部例外:{"The provider did not return a ProviderManifestToken string."}

同様のエラーを持つ多くのスレッドがあるため、他のスレッドを検索しましたが、解決策が見つからないようです。

VS2012 ProfessionalとSQL Server 2012を使用しています。Windows認証を使用するサーバーエクスプローラーを使用してサーバーに接続できます。複数の層でwebformsアプリケーションを構築しています。それらの1つには、Contextクラスを含むEntityフレームワーク層が含まれます。

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.Microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>

  <connectionStrings>
    <add name="MYSQLSERVER"
         providerName="System.Data.SqlClient"
         connectionString="Data Source=myComputer\MYSQLSERVER;Trusted_Connection=true"></add>
  </connectionStrings>
</configuration>

これは、Entity Frameworkクラスライブラリレイヤーのapp.configの外観です。

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
</configuration>

また、app.config defaultConnectionFactoryタイプを変更しようとしました

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">

しかし、何も変わりませんでした。

私が行っている変更がどのように私を心配させているのかさえ本当にわかりません。解決策をオンラインで見つけて問題を解決できたことは確かですが、web.configとこれが何を意味するのかを本当に理解したいと思います。この問題の解決策を見つけることに加えて、誰かがweb.configsを学ぶ正しい方向に私を向けることができますか?

どうぞよろしくお願いします。

18
Leyth G

私の場合、実行されていなかったのはSQL Serverインスタンスでした。私は単にサービスを開始し、すべてがうまくいきました。これが将来の誰かを助けることを願っています。

10
dotNET

まあそれを修正しました。

「。」を入れる必要がありました。次のように、データソースのlocalmachineの場合:

<add name="MYSQLSERVER"
     providerName="System.Data.SqlClient"
     connectionString="Data Source=.\MYSQLSERVER;Trusted_Connection=true"></add>    
</connectionStrings>
4
Leyth G

別の考えられる原因は次のとおりです。
AWSには(ASP.NET)HTTPサーバーとMySQL/Auroraサーバーの両方があります(AWSはOPのコメントの一部ではないことを理解していました)。
デスクトップ(実際には建物の)IPはMySQL/Auroraサーバーのセキュリティグループにホワイトリストに登録されているため、すべてが開発に完全に機能しました。
しかし、ASP.NETサーバーのIPは、MySQL/Auroraインスタンスに対してnotホワイトリストに登録されていたため、ASPサーバーのEF接続要求が拒否されていたため、thatにより、このスレッドの上部に記載されている例外が発生していました。
難解ですが、これは誰かを助けるかもしれません。

3
dlchambers

また、このエラーに直面し、これらのNuGetパッケージのダウングレードを解決しました

MySql.Data-6.9.12

MySQL.Data.Entity-6.8.8

これは私の参照です [〜#〜] url [〜#〜] 私が参照したもの

3
kgdc

私も同じ問題を抱えていました。パッケージマネージャーでNpgsqlを再インストールするとうまくいきました。バージョン管理の問題のようです。

0
Kirsy92

私の場合、パラメーターはv12.0でしたが、v11.0に変更しました。

0

mysqlに接続しようとすると、この問題が発生します。理由は、「connectionStrings」に「password」を追加するのを忘れたためです

0
user5091911

..そしてFINALLY(?!?)は、このエラーメッセージ(内部例外メッセージ= 'Arithemtic overflow'を含む)を生成するKNOWN BUGを除去するため、 'Prefer 32-bit'をオンにしてプロジェクトをビルドすることを忘れないでください。

0
Richard Hammond

私にとっては、以下のすべてでした。 1. DBは開発環境への接続を許可されていません。ファイアウォールの制限があります。 2.接続文字列に、DBの資格情報が間違っていました。したがって、一般的に言えば、接続文字列が正しくありません。

0
Amol Bhavekar

私にとっては、。\ SQLExPRESS; ...などのように、サーバーとインスタンスの間に二重のバックスラッシュを使用していました。

修正は、。\ SQLEXPRESSを使用することでした

それが誰かを助けることを願っています。

0
Shadi Namrouti