2016-05-17 28 views
5

için veritabanı sağlayıcısı yapılandırılmamış EF Core rc 1, EF Core rc 2 final ile değiştirildikten sonra, GetService() yöntemi çağrılırken geçersiz bir işlem istisnası alıyoruz. Buradaki amaç herhangi bir DbSet karşılık gelen DBContext elde etmektir:EF Core RC2 FinaI Sorun: Bu DbContext

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

istisna tam ileti:

yok veritabanı sağlayıcısı bu DBContext için yapılandırıldı. Bir sağlayıcısı, DbContext.OnConfiguring yöntemini geçersiz kılarak veya uygulama hizmeti sağlayıcısında AddDbContext kullanarak yapılandırılabilir. AddDbContext kullanılıyorsa, DbContext türünüzün yapıcınızın yapıcısında bir DbContextOptions nesnesi kabul ettiğinden ve DbContext için temel kurucuyu geçirdiğinden emin olun.

Biz etkili bir OnConfiguring veritabanı sağlayıcısını ayarlıyorsunuz

:

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

Yani mesele yöntemiyle GetService geldiğini görünüyor() verilen DbSet için doğru DBContext örneğini çözme değil ?.

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

Not DBContext ait ICurrentDbContext yerine arayüzünün kullanımı:

cevap

3

EF ekibi ile bu sorunu bildirdiği sonra, aşağıdaki geçici çözümü getirmek.

Detaylar here