Я читал и смотрел вокруг, чтобы найти этот ответ в черно-белом варианте.
Давайте поговорим о знакомой проблеме Customer
и Order
.Допустим, я загружаю 100 заказов, и каждый заказ связан с одним и только одним клиентом.
Используя Fluent NHibernate, я буду использовать References()
, чтобы связать свои Order
с Customer
, и ятакже определит мои Not.LazyLoad()
и Fetch.Join()
.
Теперь я думаю, гипотетически, NHibernate может просто объединить эти две таблицы и будет довольно легко гидрировать сущности.Однако в моих тестах я всегда вижу N + 1 запросов (на самом деле, возможно, только уникальные идентификаторы).Я могу поделиться своим кодом и таблицами, но это может утомить вас, поэтому
- Можно ли преодолеть N + 1 для Заказа -> Клиент (один -> один или, скорее, Много -> Один)?Или я должен использовать пакетный API или Criteria API?
- Если возможно, можете ли вы указать мне пример использования Fluent NHibernate?