Ist es eine gute Praxis, mehrere XXX : DbContext
Klassen für jeden Hauptabschnitt einer Webanwendung zu haben (wenn man bedenkt, dass es ein großer ist mit mindestens 50 Tabellen in seiner Datenbank)? Zum Beispiel: MembershipContext, BlogContext, StoreContext usw. Oder es ist bequemer, eine einzige DatabaseContext
für alle db access related Zeug zu haben.Mehrere DbContext-Klassen für eine einzelne Webanwendung. Gut oder schlecht?
Antwort
Die Verwendung mehrerer DbContext-Klassen bedeutet komplizierende Cross-Transaktionen (Sie können eine Lösung für dieses Problem im Internet finden hier ein Beispiel http://pastebin.com/YEDqyH0n), kann aber gerechtfertigt sein. Alles hängt von Ihrer Architektur und der Trennung ab, die Sie entwerfen möchten.
Wie auch immer Sie die Repository und UnitOfWork Muster betrachten sollten, um eine abstrakte Ebene zu erhalten, wie Sie Ihre DbContexte verwenden können. Schauen Sie hier: Multiple DbContexts in N-Tier Application und hier EF and repository pattern - ending up with multiple DbContexts in one controller - any issues (performance, data integrity)?, wenn Sie ASP.NET MVC verwenden.
Für 50 Tabellen kann es gerechtfertigt sein, mehrere DbContexte zu haben. Daher würde ich empfehlen, mehrere DbContexte zu verwenden. Sie sollten sie jedoch mithilfe der Repository- und UnitOfWork-Muster umschließen, um unabhängig von der tatsächlichen Implementierung in den anderen Layern zu sein (so könnten Sie später Ihre Meinung ändern und nur einen signierten DbContext verwenden).
Ich hoffe, dass hilft.
DbContext implementiert bereits Repository- und Unit-of-Work-Muster! –