2010-03-25 142 views
5

我想知道是否要为域模型的每个子类创建一个存储库。 有两类例如:c#存储库模式:每个子类有一个存储库?

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

你会同时创建PersonRepository和CustomerRepository或只是PersonRepository这也将能够执行客户相关的查询?

回答

3

这真的取决于你的域名是如何工作的。您通常会为您的域的每个Aggregate Root(DDD术语表示父实体,但不以传统继承方式)拥有一个存储库。

如果您真的与Person和Customer一起作为域的一部分工作,那么每个存储库都适用。存储库不需要执行繁重的工作,存储库通常可以共享大量的实现,特别是在使用ORM时。

This page是一个很好的介绍存储库模式的目标。 Domain Driven Design方法是一个很好的开始。