2010-03-25 210 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方法是一個很好的開始。