2016-05-17 5 views
5

EF Core rc 1をEF Core rc 2に置き換えた後、GetService()メソッドを呼び出すときに無効な操作例外が発生しています。ここでの目標は、任意のDbSetから対応するDbContextを得ることです:EFコアRC2 FinaI問題:このDbContextにデータベースプロバイダが設定されていません

public static ObservableCollection<TEntity> Local<TEntity>(this DbSet<TEntity> set) 
      where TEntity : class 
{ 
      var context = set.GetService<DbContext>(); 
      ... 
} 

例外フルメッセージ:

ないデータベースプロバイダは、このDbContextのために設定されています。 プロバイダーは、DbContext.OnConfiguring メソッドをオーバーライドするか、アプリケーションサービスプロバイダーでAddDbContextを使用して構成できます。 AddDbContextを使用する場合は、DbContextタイプ がコンストラクタ内でDbContextOptionsオブジェクトを受け入れて、DbContextの基本コンストラクタ に渡すようにしてください。

我々は効果的にOnConfiguringのデータベースプロバイダを設定している:

protected override void OnConfiguring(DbContextOptionsBuilder builder) 
{ 
    base.OnConfiguring(builder); 
    var connStringBuilder = new SqlConnectionStringBuilder(); 
    connStringBuilder.UserID = "MyUserID"; 
    ...   
    builder.UseSqlServer(connStringBuilder.ConnectionString); 
} 

だから、与えられたDbSetの正しいDbContextインスタンスを解決していない)問題がメソッドGetService(から来ているようです?。

public static ObservableCollection<TEntity> Local<TEntity>(this DbSet<TEntity> set) 
      where TEntity : class 
{ 
    var context = set.GetService<ICurrentDbContext>().Context;    
    ... 
} 

DbContextICurrentDbContext代わりインターフェースの使用:

答えて

3

は、EFチームでこの問題の報告の後、彼らは次の回避策をもたらします。

詳細here