c#存储库模式:每个子类一个存储库?

时间:2010-03-25 20:05:09

标签: c# repository-pattern

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

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?

1 个答案:

答案 0 :(得分:3)

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

如果您真的与Person和Customer一起工作,那么每个域的存储库都是合适的。存储库不需要繁重的实现,并且存储库通常可以共享大量实现,尤其是在使用ORM时。

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