2013-05-03 6 views
5

Die Beschreibung für DbContext lautet: "Eine DbContext-Instanz stellt eine Kombination aus Unit-of-Work- und Repository-Mustern dar ...". Aber viele Entwickler neigen dazu, ihre eigenen Repositories und UoW zu erstellen.Unterschiede zwischen dem Erstellen eines eigenen UoW/Repository und der direkten Verwendung von DbContext

Sollte ich direkt DbContext und DbSet verwenden oder sollte es meine eigenen Repositories geben? Was sind die Unterschiede.

Gibt es ein Problem, wenn wir die DbContext direkt verwenden? Wie wäre es, wenn ich in Zukunft von MS SQL zu Oracle wechseln würde?

Antwort

5

Folgen MSDN

Andere Zeiten, möchten Sie vielleicht Ihre eigene anwendungsspezifische Einheit Arbeits Schnittstelle oder Klasse schreiben, die die innere Einheit des Arbeits von Ihrem Persistenz-Tool wickelt. Sie können dies aus einer Reihe von Gründen tun. Möglicherweise möchten Sie anwendungsspezifische Protokollierung, Ablaufverfolgung oder Fehlerbehandlung zur Transaktionsverwaltung hinzufügen. Vielleicht möchten Sie die Besonderheiten Ihrer Persistenz Tooling aus dem Rest der Anwendung kapseln. Möglicherweise möchten Sie diese zusätzliche Kapselung, um es später einfacher zu machen, Persistenz-Technologien auszutauschen. Oder Sie möchten Testbarkeit in Ihrem System fördern. Viele der integrierten Implementierungseinheiten aus den üblichen Persistenzwerkzeugen sind in automatisierten Testszenarios schwer mit zu behandeln.

Kommen Sie zurück zu Ihren Fragen.

Sollte ich DbContext und DbSet direkt verwenden oder sollte es eigene Repositories geben?

In der Tat gibt es kein Problem, wenn Sie DbContext und DbSet in Ihre Repositories setzen. Wir werden uns selbst fragen, ob wir es einfacher testen möchten oder nicht. Wenn wir ein Framework entwerfen wollen, testen wir alles, was wir nicht verwenden sollten DbContext und DbSet direkt in Ihre Repositories. Wir sollten die Schnittstelle IDbContextFactory verwenden, die verwendet wird, um DbContext, nur meine zwei Cent bereitzustellen.

Um Ihnen zu helfen, viele Ansichten über das Repository zu erhalten, können Sie auf den unten stehenden Link zurückgreifen, um Optionen zwischen dem Repository und DbContext zu betrachten.

http://huyrua.wordpress.com/2010/07/13/entity-framework-4-poco-repository-and-specification-pattern/

Gibt es ein Problem, wenn wir die DbContext direkt benutzen?

Nein, es gibt kein Problem, wenn Sie DbContext direkt verwenden. Aber es wird unordentlich viele Geschäftsregeln und eine Tonne von Scale-up-Probleme als zentralisierte Datenbank, schwer zu testen und zu verletzen getrennt von Bedenken im Design-Prinzip.

Wie wäre es, wenn ich in Zukunft von MS SQL zu Oracle wechseln würde?

Eigentlich gibt es kein Problem, wenn Sie in Zukunft zwischen MS SQL und Oracle wechseln. Sie ändern nur den Datenanbieter, folgen Sie dem unten stehenden Link, wenn Sie DbContext von Entity Framework verwenden.

http://www.devart.com/news/2008/directs475.html

oder MS Entity Framework Oracle Provider

Verwandte Themen