この記事は公開から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.config
にconfiguration/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 を移動する
以上です。