c # Шаблон репозитория: один репозиторий на подкласс? - PullRequest
5 голосов
/ 25 марта 2010

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

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

1 Ответ

3 голосов
/ 25 марта 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...