Repository + UnitOfWork-Muster für Entitätsframework

8

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.

    
Naor 17.05.2011, 19:28
quelle

4 Antworten

3

Ich habe diesen Blog als einen wirklich guten Ausgangspunkt verwendet:

Ссылка

Es fängt am SEHREN Anfang an und stellt den Quellcode am Ende für Sie bereit. Es verwendet auch StructureMap, also könnte es Ihnen etwas vertraut sein.

    
DanTheMan 17.05.2011, 20:13
quelle
1

Ich würde das NCommon-Framework empfehlen. Sie können einen Blog darüber hier finden: Ссылка

    
justin 17.05.2011 19:32
quelle
1

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:

%Vor%

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%     
Steven 17.05.2011 20:07
quelle
0

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.

    
Ladislav Mrnka 17.05.2011 20:11
quelle