Ich habe das Netz auf und ab durchsucht und es ist mir nicht gelungen, ein passendes Design für meine Anwendung zu finden.
Ich suche nach Repository + UnitOfWork-Muster, die Verbindungen verwalten und sie automatisch entsorgen, wenn sie fertig sind.
Ich muss beide Webanwendungen unterstützen, wo jede Anfrage ihre eigene UnitOfWork- und Windows-Anwendung hat, wo jeder Thread sein eigenes UnitOfWork hat. Ich brauche die Muster, um das UnitOfWork automatisch zu entsorgen, wenn die Anfrage / der Thread erledigt ist. Ich möchte auch rolback im Ausnahmefall unterstützen.
Momentan benutze ich StructureMap, daher ist es mir egal, es in den vorgeschlagenen Antworten weiter zu verwenden.
Der Grund, warum ich das Repository-Muster brauche, ist, alle Fähigkeiten zu erreichen, die ich für alle meine Entitäten brauche. Der Grund, warum ich UnitOfWork brauche, besteht darin, Änderungen in mehr als einer Entität zuzulassen.
Ich werde jede Hilfe wirklich schätzen.
Danke.
Ich habe letztes Jahr einen Artikel über das Schreiben von LINQ-fähigen Repositories geschrieben, die leicht für Komponententests gefälscht werden können und gut mit der Abhängigkeitsinjektion funktionieren. Hier ist der Artikel . Kurz gesagt beschreibt der Artikel eine Arbeitseinheit, die LINQ to SQL DataContext
nachahmt und eine IDataMapper
-Schnittstelle umschließt, die das eigentliche O / RM-Tool abstrahiert. Die Arbeitseinheit enthält Eigenschaften vom Typ Repository<TEntity>
wie Repository<Customer>
oder Repository<Order>
und die Repository-Klasse implementiert IQueryable<T>
, wodurch Sie LINQ darüber erlauben können.
Das IDataMapper
ist eine einfache Schnittstelle, die wie folgt aussieht:
Die in diesem Artikel beschriebene Lösung ist für Unit-Test-freundlich und DI-freundlich ausgelegt. Die einzige Konfiguration, die Sie benötigen, ist die folgende:
%Vor%Wenn Sie bereits eine Arbeitseinheit und Repositories haben und Sie StructureMap verwenden, wo liegt das Problem?
Sie können Ihre Klassen einfach wie folgt konfigurieren:
%Vor%Und Sie können die Abhängigkeitsinjektion verwenden, um Arbeitseinheiten an Repositories zu übergeben.
Tags und Links .net c# entity-framework repository-pattern unit-of-work