Я задаюсь вопросом, создали ли Вы репозиторий для каждого подкласса модели предметной области. Например, существует два класса:
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, который также сможет выполнить связанные с клиентами запросы?
Это действительно зависит от того, как работает ваш домен. Обычно у вас будет один репозиторий для каждого агрегированного корня (термин DDD, означающий родительский объект, но не в традиционном способе наследования) вашего домена.
Если вы действительно работаете как с человеком, так и с клиентом в рамках своего домена, то для каждого из них подойдет репозиторий. Репозиторий не должен иметь тяжелую реализацию, и репозитории часто могут совместно использовать большую часть своей реализации, особенно при работе с ORM.
Эта страница представляет собой хорошее введение в цели шаблона репозитория. Подход Domain Driven Design - хорошее место для начала.