Entity Framework 6 + MSTestでプロバイダーエラーが発生する問題への対応

この記事は公開から2年以上経過しています。

EF6(Entity Framework 6)経由でSQLServerを扱うアセンブリモジュールのユニットテストをMSTest(v2)で実行したところ

System.InvalidOperationException: No Entity Framework provider found for the ADO.NET provider with invariant name ‘System.Data.SqlClient’. Make sure the provider is registered in the ‘entityFramework’ section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

のようなエラーでテストが失敗する現象が発生したので、そのときの解決策についての備忘録。


問題

MSTestアセンブリのApp.configconfiguration/entityframework/providers/providerが定義されていない。


対応

方法1

MSTestアセンブリのApp.configに被テスト対象アセンブリと同様のconfiguration/entityframework/providers/providerを定義する。

方法2

プロバイダーの設定をApp.configではなくコードベースで設定する(.NET/C#)。

    // DBコンフィギュレーションを指定
    [DbConfigurationType(typeof(DBConfig))]
    public partial class TestDBModel : DbContext
    {
        public TestDBModel(string connString)
            : base(connString)
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
        }
    }

    // DBコンフィグレーション
    public sealed class DBConfig : DbConfiguration
    {
        public DBConfig()
        {
            SetProviderServices(
                System.Data.Entity.SqlServer.SqlProviderServices.ProviderInvariantName,
                System.Data.Entity.SqlServer.SqlProviderServices.Instance);
        }
    }


参考ウェブサイトなど

  • Microsoft Docs
    コードベースの構成/DbConfiguration を移動する


以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする