2010-03-25 13 views
5

Ich frage mich, ob Sie ein Repository für jede Unterklasse eines Domänenmodells erstellen würden. Es gibt zwei Klassen zum Beispiel:C# Repository-Muster: Ein Repository pro Unterklasse?

 
public class Person 
{ 
    public virtual String GivenName { set; get; } 
    public virtual String FamilyName { set; get; } 
    public virtual String EMailAdress { set; get; }  
} 

public class Customer : Person 
{ 
    public virtual DateTime RegistrationDate { get; set; } 
    public virtual String Password { get; set; }   
} 

Würden Sie schaffen sowohl eine PersonRepository und CustomerRepository oder einfach nur die PersonRepository, die auch in der Lage sein würde, Kundenbezogene Abfragen auszuführen?

Antwort

3

Es hängt wirklich davon ab, wie Ihre Domain funktioniert. Sie haben normalerweise ein Repository für jede Aggregate Root (ein DDD-Begriff, der eine übergeordnete Entität bedeutet, aber nicht auf traditionelle Weise) Ihrer Domain.

Wenn Sie wirklich sowohl mit Person als auch mit Kunde als Teil Ihrer Domäne arbeiten, dann ist ein Repository für jeden geeignet. Ein Repository muss nicht über eine umfangreiche Implementierung verfügen, und Repositories können häufig einen Großteil ihrer Implementierung gemeinsam nutzen, insbesondere wenn sie mit einem ORM arbeiten.

This page ist eine gute Einführung in die Ziele des Repository-Muster. Der Domain Driven Design Ansatz ist ein guter Anfang.

Verwandte Themen