Nehmen wir an, ich habe in meiner Datenbank mehrere Datenbankschemata, zum Beispiel: HumanRessources und Inventar.
In jedem dieser Schemata befinden sich mehrere Tabellen. Teilen Sie Ihre DB in der Regel in mehrere Edmx oder in der Regel nur alles in einem einzigen edmx?
Ich habe überlegt, für jedes Schema eine edmx zu erstellen, frage mich jedoch, wie sich das auf ein gemeinsames Arbeitsmuster auswirkt. Beim Lesen einiger Artikel wird der ObjectContext die Arbeitseinheit sein. Wenn ich 2 edmx definiere, werde ich mit 2 ObjectContext: HumanRessourceContext und InventoryContext enden, was bedeutet, dass jeder Wille eine Einheit von Arbeit ist. Was, wenn ich möchte, dass alle Änderungen, die an einer Entität in der Human Ressource und einer Entität im InventoryContext vorgenommen werden, ATOMIC sind, kann dies mit dem Unitwork-Muster erreicht werden?
Auch wenn dies keine Befürwortung der Aufteilung der Datenbank nach Schema in EDMX ist, können Sie die Aktualisierungen mit Hilfe von TransactionScope
:
Offensichtlich können Sie Ihre Kontextobjekte nach Belieben neu anordnen (wenn Sie sie beide gleichzeitig verwenden müssen) und Sie können die Transaktionsisolationsstufe auf das anpassen, was angemessen ist, aber das sollte Ihnen das geben, was Sie brauchen zu wissen, um Ihre Datenbank atomaren Änderungen zu machen.
Wenn Ihre Inventory- und HumanResources-Tabellen keine Beziehungen zwischen ihnen haben, ist das Aufteilen der Tabellen in zwei edmx-Dateien in Ordnung, obwohl ich nicht weiß, welchen Nutzen es bietet. Wenn sie direkte oder indirekte Beziehungen haben, werden Sie Probleme bekommen, diese Beziehungen zu verwenden. Die einfachste Lösung ist die Verwendung eines einzelnen EDM.
Tags und Links .net c# entity-framework unit-of-work