2016-05-17 8 views
5

Nach dem Ersetzen von EF Core rc 1 durch EF Core rc 2 final erhalten wir beim Aufruf der Methode GetService() eine ungültige Operationsausnahme. Das Ziel ist hier die entsprechende DbContext von einem bestimmten DbSet zu bekommen:EF Core RC2 FinaI Problem: Für diesen DbContext wurde kein Datenbankprovider konfiguriert

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

Die Ausnahme vollständige Meldung:

Kein Datenbank-Anbieter hat für diese DbContext konfiguriert wurde. Ein Provider kann durch Überschreiben der DbContext.OnConfiguring -Methode oder durch Verwenden von AddDbContext auf dem Anwendungsdienstanbieter konfiguriert werden. Wenn AddDbContext verwendet wird, stellen Sie außerdem sicher, dass Ihr DbContext-Typ ein DbContextOptions-Objekt in seinem Konstruktor akzeptiert und an den Basiskonstruktor für DbContext übergibt.

Wir effektiv die Datenbankanbieter in OnConfiguring setzen:

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

So scheint es, dass die Frage der Methode kommt GetService() nicht die Lösung der richtige DbContext Instanz für die gegebene DbSet ?.

Antwort

3

dieses Problem mit dem EF-Team Nach der Meldung, sie bringen die folgende Abhilfe:

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

Beachten Sie die Verwendung der Schnittstelle ICurrentDbContext statt DbContext.

Details here

Verwandte Themen