8 votes

Entity Framework avec plusieurs edmx

Disons que j'ai dans ma base de données plusieurs schémas de base de données, par exemple : HumanRessources et Inventaire.

Dans chacun de ces schémas, il y a plusieurs tables. Avez-vous l'habitude de diviser votre base de données en plusieurs edmx ou bien mettez-vous tout dans un seul edmx ?

Je pensais créer un edmx pour chaque schéma, mais je me demande quel impact cela aura sur un schéma unitaire. En lisant certains articles, l'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 chacun sera une unité de travail. Si je veux que toutes les modifications apportées à une entité dans le HumanRessourceContext et à une entité dans l'InventoryContext soient ATOMIQUES, est-ce que cela peut être réalisé avec le modèle unitofwork ?

7voto

Adam Robinson Points 88472

Bien que cela ne soit pas une approbation de la division de la base de données par schéma en EDMX, vous pouvez rendre les mises à jour atomiques en utilisant un fichier TransactionScope :

using(TransactionScope trans = new TransactionScope())
{
    using(HumanResources hr = new HumanResources())
    {
        //...

        hr.SaveChanges();
    }

    using(Inventory inv = new Inventory())
    {
        //...

        inv.SaveChanges();
    }

    trans.Complete();
}

Bien entendu, vous pouvez réorganiser vos objets de contexte comme vous le souhaitez (si vous devez les utiliser tous les deux en même temps, par exemple) et vous pouvez modifier le niveau d'isolation de la transaction comme bon vous semble, mais cela devrait vous donner ce que vous devez savoir pour que vos modifications de base de données soient atomiques.

2voto

Dave Swersky Points 25958

Si vos tables Inventaire et Ressources humaines n'ont pas de relations entre elles, vous pouvez les diviser en deux fichiers edmx, mais je ne vois pas quel avantage cela pourrait vous apporter. Si elles ont des relations directes ou indirectes, vous rencontrerez des problèmes en essayant d'utiliser ces relations. La solution la plus simple est d'utiliser une seule GED.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X