检索对象和子集在使用LINQ的NHibernate
-
05-09-2019 - |
题
我使用LINQ NHibernate的加载的对象和加载热切一个子集合的问题。的对象是这样的:
public class Order
{
public Guid Id {get; set; }
public IList<OrderLine> OrderLines {get;set;}
}
public class OrderLine
{
public Guid Id {get;set;}
public string Item {get;set;}
}
我想与特定的ID和(热切地)所有的它加载订单的使用LINQ孩子OrderLines。我的查询是这样的:
using (var s = _sessionFactory.OpenSession())
using (var tx = s.BeginTransaction())
{
var order = from o in s.Linq<Order>().Expand("OrderLines")
where o.Id == id
select o;
return order.First();
}
然而,当我显示顺序,OrderLines
属性只包含一个对象 - 数据库中肯定有3奇怪的是,如果我做一个foreach绕回我得到的所有3子项前order
- 但这访问数据库两次。
我曾尝试修改所述查询中使用Single()
代替,但这并不能工作。
我做得不对的LINQ?或者是我使用Expand
的不正确的?
提前,结果,由于 西蒙。
注意:我使用FluentNHibernate自动映射创建我NH映射和我的数据库是SQLite数据库(一个文件,而不是在存储器中)
解决方案
看来,这个特征有一个错误:
FirstOrDefault()打破FetchType =使用LINQ加入到NHibernate的
看看所生成的数据库查询,如果它具有TOP 1子句,这可以是该问题。
记住LINQ到NHibernate的是从生产仍然远远准备好,所以,可能会发生这种错误。
不隶属于 StackOverflow