Reputation: 51
I am wondering if you would create a repository for each subclass of a domain model. There are two classes for example:
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; } }
Would you create both a PersonRepository and a CustomerRepository or just the PersonRepository which would also be able to execute Customer related queries?
Upvotes: 5
Views: 1841
Reputation: 2358
It really depends on how you domain works. You would usually have one Repository for every Aggregate Root (a DDD term meaning a parent entity, but not in the traditional inheritance way) of your domain.
If you really work with both Person and Customer as part of you domain, then a Repository for each is suitable. A Repository does not need to have a heavy implementation, and Repositories can often share a lot of their implementation, especially when working with an ORM.
This page is a good introduction to the aims of the repository pattern. The Domain Driven Design approach is a good place to start.
Upvotes: 3