NHibernate Query родительские и дочерние объекты охотно без объединения - PullRequest
0 голосов
/ 17 декабря 2011

У меня есть простой домен с Order и OrderLines.Можно ли загрузить Order и связанные объекты OrderLine без объединения?Я пытаюсь использовать Future / FutureValue для выполнения двух простых запросов.Я надеюсь, что NHibernate знает, как объединить их в кеше.Я использую NHibernate 3.2 с отображением только кода.

Итак, вот что у меня есть:

    // Get all the order lines for the order
    var lineQuery = session.QueryOver<OrderLine>()
        .Where(x => x.WebOrder.Id == id).Future<OrderLine>();

    // Get the order
    var orderQuery = session.QueryOver<WebOrder>()
        .Where(x => x.Id == id)
        .FutureValue<WebOrder>();

    var order = orderQuery.Value;

Это работает, как и ожидалось, отправляя два запроса в базу данных.Однако, когда я использую цикл, чтобы пройти order.OrderLines, NHibernate отправляет другой запрос, чтобы получить строки заказа.Я думаю, это потому, что я использую ограничения (где (x => ...) NHibernate не знает, как получить объекты из кэша сеанса.

Почему я хочу сделатьэто без объединения

Я знаю, что могу использовать Fetch (x => x.OrderLines) .Eager, но иногда фактический родительский (в данном случае Order) настолько велик, что я не хочу выполнятьобъединение. После того, как весь набор результатов содержит все столбцы заказов для каждой строки заказа, если я выполняю объединение. У меня нет необработанных чисел или чего-либо еще, мне просто интересно, возможно ли это.

1 Ответ

0 голосов
/ 19 декабря 2011

это вполне возможно.см. стратегии извлечения nHib .
, вы можете выбрать либо «выбрать» (если вы имеете дело только с одним Order одновременно), либо «отобрать».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...