Как динамически изменять запросы загрузки NHibernate во время выполнения? EventListeners? Перехватчики? - PullRequest
2 голосов
/ 17 марта 2010

Мне нужно изменить запрос, используемый для загрузки ссылок "многие к одному" в моей модели.

Необходимо также работать с лениво загруженными объектами.

В частности, мне нужно иметь возможность дополнительно фильтровать эти данные. К сожалению, NH не позволит мне фильтровать отношения «многие-к-одному», используя встроенную систему фильтрации (?) . Я мог бы просто сделать что-то неправильно.

Есть ли ловушка, где я могу вручную и динамически изменять запрос, используемый для загрузки данных? Или альтернатива фильтрам, которые позволят мне указать параметры?

Справка:

Я работаю с базой данных, в которой используется форма контроля версий, причем каждая сущность имеет естественный идентификатор PK, поле EntityId, RevisionValidTo и RevisionValidFrom. Может быть много строк, использующих один и тот же EntityId, который является ссылкой для других таблиц для присоединения, но диапазоны редакций являются взаимоисключающими. Таким образом, отношение «один ко многим к одному» применяется к фильтру. Тем не менее, NH не предлагает никакого способа задать фильтр для ссылок «многие-к-одному» (они делают для коллекций ...)

1 Ответ

1 голос
/ 17 марта 2010

Я шел по той же дороге, прежде чем получил откровение, что у меня нет , чтобы лениво загружать свои дочерние объекты. Может быть, стоит сэкономить, просто заполнив сущность из репозитория, когда он изначально загружен. Если вы не хотите принимать удар каждый раз, вы можете немного поговорить о том, что вы взаимодействуете с хранилищем

GetObject(entityId).Including(x => x.Revisions).Between(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...