Ho un progetto di biblioteca di classe contenente un contesto db EF Core. Questo fa parte di un framework.
Voglio estendere questo contesto, ma senza apportare modifiche al progetto quadro. Il secondo contesto userebbe lo stesso database.
Ho creato un altro contesto db in una libreria di classi diversa (qualcosa di simile a questo ). Funziona bene, posso fare query e creare migrazioni separatamente dall'altro contesto.
Ad esempio, se ho un'entità Utente nel primo contesto e UserBooks nel secondo, quando provo a join
tra i due contesti non funziona, ottenendo un'eccezione
System.ArgumentNullException: il valore non può essere nullo. Nome del parametro: entityType
Questo è un problema noto.
Provato anche con l'ultimo pacchetto NuGet 3.0.0-preview3.19153.1 ma l'unica differenza è che il messaggio di errore è migliore
Impossibile utilizzare più istanze DbContext all'interno di una singola esecuzione della query. Assicurarsi che la query utilizzi una singola istanza di contesto
C'è un modo per
un. unire due contesti
o
b. estendere un contesto in un progetto separato senza apportare (o minimizzare) modifiche al contesto "principale"
Puoi fare in modo che il tuo secondo contesto erediti il primo.
public class MyFirstContext : DbContext
{
public DbSet<User> Users { get; set; }
}
public class MySecondContext : MyFirstContext
{
public DbSet<UserBook> UserBooks { get; set; }
}
Ovviamente, il tuo secondo contesto potrebbe trovarsi in un altro assemblaggio. Ora hai solo bisogno di MySecondContext
nella tua applicazione. Potrai unirti a Users
e UserBooks
.