Entity Framework avec plusieurs edmx

Disons que j’ai dans ma firebase database plusieurs schémas de firebase database, par exemple: HumanRessources et Inventory.

Dans chacun de ces schémas contient plusieurs tables. Divisez-vous généralement votre firebase database en plusieurs edmx ou mettez-vous tout simplement dans un seul edmx?

Je pensais créer un edmx pour chaque schéma, mais je me demandais quel en serait l’impact sur un motif unitorwork. En lisant certains articles, ObjectContext sera l’unité de travail. En définissant 2 edmx, je vais me retrouver avec 2 ObjectContext: HumanRessourceContext et InventoryContext, ce qui signifie que chaque unité sera une unité de travail. Et si je veux que toutes les modifications apscopes à une entité de la source humanisée et à une entité du contexte d’inventaire soient ATOMIC, est-ce possible avec le modèle d’unité de travail?

Bien qu’il ne s’agisse pas d’une approbation de scinder la firebase database par schéma en EDMX, vous pouvez rendre les mises à jour atomiques à l’aide d’un TransactionScope :

 using(TransactionScope trans = new TransactionScope()) { using(HumanResources hr = new HumanResources()) { //... hr.SaveChanges(); } using(Inventory inv = new Inventory()) { //... inv.SaveChanges(); } trans.Complete(); } 

Évidemment, vous pouvez réorganiser vos objects de contexte comme bon vous semble (si vous devez les utiliser simultanément, par exemple) et vous pouvez modifier le niveau d’isolation de la transaction en fonction de vos besoins, mais cela devrait vous donner ce dont vous avez besoin de savoir. afin de rendre vos changements de firebase database atomiques.

Si vos tables Inventory et HumanResources n’ont aucune relation entre elles, il est correct de les séparer en deux fichiers edmx, bien que je ne sache pas quel avantage cela apporterait. S’ils ont des relations directes ou indirectes, vous aurez des problèmes pour essayer de les utiliser. La solution la plus simple consiste à utiliser un seul EDM.