Как должен выглядеть мой уровень доступа к данным с отношениями родитель-потомок?

Я пишу свое первое приложение NHibernate, но думаю, этот вопрос относится к любой структуре ORM. Мое приложение представляет собой простой трекер ошибок (все разработчики понимают предметную область, верно?), И мне интересно, как лучше всего смоделировать отношения проект / заявка в DAL. Project имеет несколько Ticket; Ticket должен принадлежать Project.

Каждый пример, который я видел, показывает IRepository<T>, с FindAll, Save, Delete и т. Д. Итак, у меня есть interface IProjectRepository : IRepository<Project>.

Мой вопрос исходит из следующего: есть ли у меня ITicketRepository, который знает, как говорить о билетах, или это то, о чем IProjectRepository нужно знать?

Или я лаю совсем не на то дерево? Может ли кто-нибудь указать мне на какой-нибудь пример кода, который моделирует родительско-дочерние отношения с помощью DAL?


person Roger Lipscombe    schedule 19.04.2009    source источник


Ответы (1)


Я думаю, вы захотите поместить его в репозиторий IRepository, если вы собираетесь использовать только список билетов, вы также можете добавить коллекцию билетов в объект Project и выполнить отложенную загрузку билетов. Таким образом, вы можете получить проект из своего IRepository, и если вы хотите, чтобы все билеты просто попали в эту коллекцию, но если вы просто собираетесь искать только билеты, вы можете работать с ними через IRepository.

person James Avery    schedule 19.04.2009
comment
Но есть ли у меня два интерфейса репозитория или только один? Весь шаблон IRepository ‹T› подразумевает, что я должен иметь по одному для каждого типа сущности. - person Roger Lipscombe; 19.04.2009
comment
Я считаю, что у вас должно быть по одному на каждую сущность, но это не значит, что вы также не можете воспользоваться преимуществами коллекции с отложенной загрузкой. - person James Avery; 19.04.2009