9

EF5 までは、SQL Server 2012 に接続するために、次のような接続文字列を指定するだけで済みました。

Data Source=.\SqlExpress;Initial Catalog=MyDatabase;Integrated security=True;MultipleActiveResultSets=True

このメソッドは EF6 では機能せず、例外が発生します

'System.Data.Odbc' ADO.NET プロバイダーの Entity Framework プロバイダーが見つかりません。プロバイダーがアプリケーション構成ファイルの「entityFramework」セクションに登録されていることを確認してください

私はapp.configファイルをまったく使用していません。上記の接続文字列を MyContext コンストラクターに渡しています。System.Data.SqlClient を使用せずに、Odbc プロバイダーを使用しようとしているのはなぜですか?

EF6 コード ファーストで SQL Server に接続するには、何をする必要がありますか? EntityFramework.dll と EntityFramework.SqlServer.dll の両方が Application フォルダーにあることを確認しました。WPFプロジェクトにEF6 nugetパッケージv6.0.0.1を追加しましたが、EFライブラリを直接使用せず、自動的に作成されたApp.Configファイル(nugetによって)がアプリケーション(デバッグ)フォルダーにコピーされていることを確認します-まだありません成功。

また、コードで手動でプロバイダーを設定しようとしました:

public class OeeCoachConfiguration : DbConfiguration
{
    public OeeCoachConfiguration()
    {
        SetProviderServices("System.Data.SqlClient",
            System.Data.Entity.SqlServer.SqlProviderServices.Instance);
    }
}

まだ成功していません。私のプロジェクトの構造は次のとおりです(簡略化):

WPF プロジェクト - EF への参照がありません (EF 参照の追加も試みました)

ViewModel クラス ライブラリ - EF への参照がありません

モデル クラス ライブラリ - EF ライブラリ (両方の dll) への参照があります。

データ クラス ライブラリ - UI ライブラリ (両方の dll) への参照があります。

私は CodeFirst アプローチを使用していますが、このセットアップは EF5 で問題なく動作します。どんな助けでも大歓迎です。

4

4 に答える 4

1

オプション 1: 実行可能プロジェクトの app.config に以下を追加してみてください。

<entityFramework>        
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

オプション 2: コード ベースのプロバイダー登録を使用する場合は、EF6 のエンティティ フレームワーク プロバイダーに関するガイドラインに従ってください。

  • アプリケーションの DbContext と同じアセンブリに DbConfiguration があることを確認してください。
于 2013-10-30T10:23:40.710 に答える