Cosa è incluso nel modello DBContext?
-
21-12-2019 - |
Domanda
Descrizione:
Ho provato a separare determinati segmenti di dominio in diversi DbContext
s.
Ognuno ha diversi DbSet
s, ma ci sono alcuni DbSet
s che sono condivisi, ad esempio il UserProfile
.
Il motivo per questa separazione è la velocità con cui viene generato il modello e la semplicità (meno set in un oggetto, aiuta con IntelliSense).
Tuttavia, non sono sicuro di cosa appartiene esattamente al modello generato.
Q1: è ogni entità che è connessa in transizione con le entità, per le quali esiste un DBSET in un DBContext, incluso nel modello?
Q2: In caso affermativo, ciò significa che performance-saggio non serva alcuno scopo di separare il dominio in contesti diversi, poiché tutto ciò che è collegato finisce nel modello comunque, indipendentemente da quale DbSet
sono indicati nel DbContext
?
Dove posso trovare maggiori informazioni su come viene generato il modello? Ho letto un libro su EntityFramework e Codefirst e non ho trovato informazioni specifiche ...
Soluzione
Rispondere alla tua Prima domanda : Sì, tutte le relazioni sono modellate incluse le entità su entrambi i lati, quindi ogni entità che è collegata da una proprietà di navigazione a un'entità inclusa sarà inclusa anche nel modello indipendentemente se C'è un DbSet
per questo o no.
Entity Framework non ti obbliga a creare DbSets
per tutte le entità. Questo può essere utile se vuoi "limitare" le entità dei bambini per essere accessibili solo attraverso i loro genitori.
Per quanto riguarda la tua Seconda domanda : separare i contesti potrebbe ancora migliorare le prestazioni, se non tutte le entità appartenenti a un contesto sono raggiungibili tramite proprietà di navigazione delle entità appartenenti all'altro contesto. Là potrebbe è un costo aggiuntivo associato con esplicitamente tra cui più DbSets
in un contesto, anche.
È possibile leggere (alcune parti di) il codice sorgente del framework dell'entità, è open source e disponibile su codeplex Per saperne di più su come è costruito il modello.