2010-03-25 5 views
5

Je me demande si vous souhaitez créer un référentiel pour chaque sous-classe d'un modèle de domaine. Il existe deux classes par exemple:C# Modèle de référentiel: un référentiel par sous-classe?

 
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; }   
} 

-vous créer à la fois un PersonRepository et un CustomerRepository ou tout simplement la PersonRepository qui serait également en mesure d'exécuter des requêtes relatives à la clientèle?

Répondre

3

Cela dépend vraiment du fonctionnement de votre domaine. Vous avez généralement un référentiel pour chaque Aggregate Root (un terme DDD qui signifie une entité parente, mais pas de la manière traditionnelle d'héritage) de votre domaine.

Si vous travaillez vraiment avec la personne et le client dans le cadre de votre domaine, alors un référentiel pour chacun est approprié. Un référentiel n'a pas besoin d'une implémentation lourde et les référentiels peuvent souvent partager une grande partie de leur implémentation, en particulier lorsque vous travaillez avec un ORM.

This page est une bonne introduction aux objectifs du modèle de référentiel. L'approche Domain Driven Design est un bon point de départ.