我遇到这个linq到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>();
答案 0 :(得分:0)
我认为用Linq处理这种情况是不可能的。但它与HQL:
var listeShopping = session.CreateQuery(@"
select item
from Cart cart
join cart.ItemShopping item
join fetch item.Manufacturer
")
.List<ItemShopping>();
附注:急切地以这种方式获取制造商并不一定是表现最佳的方法。请考虑在Manufacturer类中使用batch-size
。