У меня есть простой домен с 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) настолько велик, что я не хочу выполнятьобъединение. После того, как весь набор результатов содержит все столбцы заказов для каждой строки заказа, если я выполняю объединение. У меня нет необработанных чисел или чего-либо еще, мне просто интересно, возможно ли это.