Это то, что тянуло меня некоторое время. Рассмотрим веб-приложение (тип MVC) с ORM (например, Nhiberate) в качестве уровня доступа к данным.Nhibernate (и ORM в целом): работа с объектами или объектами?
С одной стороны - ООП/модель Rich домена руками - Я чувствую, что должно быть обход (ссылки) реальные объекты, я имею в виду.
С другой стороны - БД/Web App рука - Я чувствую, что это проще и эффективнее просто передать целочисленные Идентификаторы объектов, а не сами объектов.
Рассмотрим электронной коммерции типа каталога приложения:
- пользователь вошел в систему и переходит к странице продукта.
- Опубликовать комментарий.
- Действие контроллера, которому необходимо сохранить этот комментарий, содержит 3 части информации: a) идентификатор пользователя (из файла cookie или где-либо), b) идентификатор продукта (возможно, из строки запроса) и c) текст комментария.
- Теперь, какая здесь лучшая практика? Действительно ли стоит раздувать объекты пользователя и продукта (например, получая их из репозитория со всей работой БД, что влечет за собой), когда мы знаем, что все, что они будут использовать, так это то, что ORM может читать свои идентификаторы и устанавливать соответствующие внешние ключи в таблице БД, где хранятся комментарии?
Что представляют собой виды людей? Возможно, веб-приложения должны быть предоставлены немного больше, чем другие приложения, из-за их безгражданности? Я предполагаю, что ответы будут «это зависит», но, возможно, некоторые люди - пуристы по этому вопросу.
Это общий вопрос, который, вероятно, применимо ко многим платформам, но , если приводить примеры, я бы предпочел, чтобы они были ASP.NET MVC, если это возможно.
спасибо.
Как проще «просто» пройти вокруг идентификаторов, а не ссылки? Кроме того, помимо получения дополнительной сущности из базы данных, это более результативно? – apollodude217
@Apollodude: конечно, как только вы * имеете * объекты, они не более эффективны - это не моя точка. Но два ненужных извлечения ББ заставляют меня вздрагивать. Проверьте решение Daniel Auger, которое удовлетворяет всех. – UpTheCreek
Я согласен с тем, что проблема с производительностью вполне справедлива. Я хотел понять, какие еще преимущества вы получили. – apollodude217