С # шаблон репозитория: один репозиторий на подкласс?

Мне интересно, могли бы вы создать репозиторий для каждого подкласса модели предметной области. Например, есть два класса:

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, который также сможет выполнять запросы, связанные с клиентом?


person Alex    schedule 25.03.2010    source источник


Ответы (1)


Это действительно зависит от того, как работает ваш домен. Обычно у вас будет один репозиторий для каждого агрегированного корня (термин DDD, означающий родительский объект, но не традиционным способом наследования) вашего домена.

Если вы действительно работаете как с человеком, так и с клиентом в рамках своего домена, то подойдет репозиторий для каждого из них. Репозиторий не обязательно должен иметь тяжелую реализацию, и репозитории часто могут совместно использовать большую часть своей реализации, особенно при работе с ORM.

Эта страница является хорошее введение в цели паттерна репозиторий. Подход Domain Driven Design - хорошее место для начала.

person jheppinstall    schedule 25.03.2010
comment
Ссылка на введение в шаблон репозитория не работает. Не могли бы вы предоставить новый источник? - person Daniel García Rubio; 25.07.2018