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