我想知道您是否要为域模型的每个子类创建一个存储库。 例如,有两个类:
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?
答案 0 :(得分:3)
这实际上取决于您的域名如何运作。您通常会为您的域中的每个Aggregate Root(一个DDD术语表示父实体,但不是传统的继承方式)拥有一个存储库。
如果您真的与Person和Customer一起工作,那么每个域的存储库都是合适的。存储库不需要繁重的实现,并且存储库通常可以共享大量实现,尤其是在使用ORM时。
This page是对存储库模式目标的一个很好的介绍。 Domain Driven Design方法是一个很好的起点。