Мне интересно, что считается лучшей или более правильной практикой в следующем сценарии:
Я сопоставил следующие бизнес-объекты с помощью NHibernate:
- Стена
- WallPost
- WallPostComment
Стена имеет ноль-ко-многим WallPosts.У WallPost есть множество WallPostComments от нуля ко многим.Совокупный корень - Wall.
Я пишу задачу по добавлению WallPostComment в WallPost.Приложение является приложением MVC, и запрос на добавление нового WallPostComment содержит идентификатор WallPost, к которому относится комментарий.Чтобы добавить комментарий, мне нужно получить пост, к которому он должен быть добавлен.Мой вопрос: каков наилучший / самый правильный способ сделать это?
До сих пор я пробовал два подхода, и один из них кажется более «правильным», хотя и неэффективным.Другой, более эффективный подход кажется «неправильным».
1) Я загружаю корень агрегата Wall из сеанса и выбираю FirstOrDefault из его коллекции Posts.Это кажется «правильным» в том смысле, что я получаю доступ к записи на стене через объединенный корень, но при этом все сообщения на стене извлекаются из базы данных (неограниченный набор результатов).
2) Я загружаю стенусообщение непосредственно из сеанса с использованием wallPostId, переданного мне по запросу.Это кажется «неправильным», потому что я обхожу агрегированный корень - но это один удар по базе данных для одной строки данных.
Какой подход лучше или предпочтительнее?Какие еще у вас есть предложения?