Question

Description: J'ai essayé de séparer certains segments de domaine en différents DbContexts.

Chacun a plusieurs DbSets, mais il y en a DbSets qui sont partagés, par exemple le UserProfile.

La raison de cette séparation est la vitesse à laquelle le modèle est généré et la simplicité (moins d'ensembles dans un objet, aide à l'intellisense).

Cependant, je ne suis pas sûr de ce qui appartient exactement au modèle généré.

T1 : Chaque entité connectée de manière transitionnelle aux entités pour lesquelles un DbSet existe dans un DbContext est-elle incluse dans le modèle ?

T2 : Si tel est le cas, cela signifierait-il qu'en termes de performances, il ne sert à rien de séparer le domaine en différents contextes, puisque tout ce qui est connecté finit de toute façon dans le modèle, quel que soit le contexte. DbSets sont indiqués dans le DbContext?

Où puis-je trouver plus d'informations sur la manière dont le modèle est généré ?J'ai lu un livre sur EntityFramework et CodeFirst et je n'ai pas trouvé cette information spécifique...

Était-ce utile?

La solution

Répondre à votre première question:oui, toutes les relations sont modélisées, y compris les entités des deux côtés, donc chaque entité connectée par une propriété de navigation à une entité incluse sera également incluse dans le modèle, qu'il y ait ou non un DbSet pour ça ou pas.

Entity Framework ne vous oblige pas à créer DbSets pour toutes les entités.Cela peut être pratique si vous souhaitez « restreindre » les entités enfants pour qu'elles ne soient accessibles que via leurs parents.

Concernant votre deuxième question:séparer vos contextes peut encore améliorer les performances, si toutes les entités appartenant à un contexte ne sont pas accessibles via les propriétés de navigation des entités appartenant à l'autre contexte.Là pourrait être un coût supplémentaire associé à l'inclusion explicite de davantage DbSets dans un contexte aussi.

Vous pouvez lire (certaines parties) le code source d'Entity Framework, il est open source et disponible sur CodePlex pour en savoir plus sur la façon dont le modèle est construit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top