2010-03-25 31 views
5

Tôi tự hỏi nếu bạn sẽ tạo một kho lưu trữ cho mỗi phân lớp của một mô hình miền. Có hai lớp ví dụ:C# Mẫu lưu trữ: Một kho lưu trữ trên mỗi lớp con?

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

bạn có tạo ra cả một PersonRepository và CustomerRepository hay chỉ là PersonRepository đó cũng sẽ có thể thực hiện các truy vấn liên quan đến khách hàng?

Trả lời

3

Nó thực sự phụ thuộc vào cách bạn hoạt động. Bạn thường sẽ có một Kho lưu trữ cho mỗi Aggregate Root (một thuật ngữ DDD có nghĩa là một thực thể cha, nhưng không phải theo cách thừa kế truyền thống) của miền của bạn.

Nếu bạn thực sự làm việc với cả Người và Khách hàng như một phần của miền của bạn, thì một Kho lưu trữ cho từng miền phù hợp. Kho lưu trữ không cần phải triển khai nhiều và các kho lưu trữ thường có thể chia sẻ nhiều triển khai của chúng, đặc biệt khi làm việc với ORM.

This page là phần giới thiệu tốt về mục đích của mẫu kho lưu trữ. Cách tiếp cận Domain Driven Design là một nơi tốt để bắt đầu.

Các vấn đề liên quan