Сложная проблема с загрузкой - PullRequest
1 голос
/ 07 июня 2011

У меня проблема с этим запросом linq to nhibernate

var listeShopping = (from cart in session.Query<Cart>()
    .Fetch(cart => cart.ItemShopping)
    .ThenFetch(item => item.Manufacturer)
    select cart.ItemShopping).ToList<ItemShopping>();

Когда я его запускаю, возникает странная ошибка:

Query specified join fetching, but the owner of the fetched association was
not present in the select list [FromElement{explicit,not a collection join,
fetch join,fetch non-lazy properties,classAlias=_1,role=,tableName= (...)

Мне нужна энергичная загрузка, какя могу избежать этой ошибки?Если это поможет, я упомяну, что я использую таблицу корзины только как внутреннюю таблицу соединений.Мне просто нужно знать ItemShopping в корзине.

С уважением

Редактировать

Я изменил код, чтобы сделать его читаемым на английском языке.Я исправил ошибку.

Редактировать 2

Я нашел этот метод, похоже, он работает ... Может кто-нибудь проверить его, если я не сделал ошибку?

        var list = (from item in session.Query<ItemShopping>()
                   .Fetch(item => item.Manufacturer)
                   from cart in item.Cart
                   select item).ToList<ItemShopping>();

1 Ответ

0 голосов
/ 07 июня 2011

Я не думаю, что возможно справиться с этим сценарием с Linq. Но это с HQL:

var listeShopping = session.CreateQuery(@"
    select item
    from Cart cart
    join cart.ItemShopping item
    join fetch item.Manufacturer
    ")
    .List<ItemShopping>();

Примечание: стремление подобрать производителя таким образом, не обязательно является наилучшим подходом. Попробуйте вместо этого использовать batch-size в классе «Производитель».

...