Как выполнить запрос Nhibernate ICriteria с помощью setFetchMode (Lazy), если в HBM определено значение lazy = false? - PullRequest
0 голосов
/ 29 сентября 2010

Я бы хотел выполнить запрос критерия с ленивыми ассоциациями "многие к одному".Эти ассоциации установлены как lazy="false" в HBM.Это потому, что мы охотно используем его на 90% проекта.

Но есть несколько «больших» запросов, которые должны выполняться как lazy="proxy".

HBM:

<many-to-one name="DestinationElement" class="X" column="DstElemId" not-null="true" unique="false" cascade="save-update" outer-join="auto" fetch="select" lazy="false" index="IDX_Ass_DestElem">

Настройка критериев:

criteria.SetFetchMode("DestinationElement", FetchMode.Lazy);

Работает противоположным образом, но не так.Он получает с нетерпением.

LOC составляет 20K +, и это было бы массивным рефакторингом, чтобы сделать это наоборот.

Как я могу заставить его извлекать лениво только тогда, когда я хочу,с нетерпением получить все остальные времена?

Заранее спасибо!

1 Ответ

1 голос
/ 30 сентября 2010

lazy="false" в HBM нельзя переопределить в запросе (кроме того, что это плохая идея в 99% случаев)

Вам придется изменить свой код.

...