Linq to 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 と (熱心に) すべての子 OrderLines を Linq を使用して注文を読み込もうとしています。私のクエリは次のようになります。
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
プロパティにはオブジェクトが 1 つしか含まれません。データベースには間違いなく 3 つのオブジェクトがあります。奇妙なことに、返す前に foreach を実行するとorder
、3 つの子アイテムすべてが取得されますが、これはデータベースに 2 回ヒットします。
代わりに使用するクエリを変更しようとしましSingle()
たが、それも機能しません。
私はlinqで何か間違っていますか?それとも私の使い方がExpand
間違っていますか?
前もって感謝します、
サイモン。
注: FluentNHibernate Automapping を使用して NH マッピングを作成しており、データベースは Sqlite データベース (メモリ内ではなくファイル) です。