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

Ale*_*lex 5 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,它还能够执行与客户相关的查询?

jhe*_*all 3

这实际上取决于您的域的工作方式。通常,您的域的每个聚合根(一种 DDD 术语,表示父实体,但不是传统的继承方式)都有一个存储库。

如果您确实将个人和客户作为域的一部分进行工作,那么每个人的存储库都是合适的。存储库不需要繁重的实现,并且存储库通常可以共享许多实现,尤其是在使用 ORM 时。

本页很好地介绍了存储库模式的目标。领域驱动设计方法是一个很好的起点。