LINQのNHibernateのを使用して、オブジェクトと子のコレクションを取得
-
05-09-2019 - |
質問
私は、オブジェクトをロードし、熱心に子コレクションをロードするためにNHibernateのにLINQのを使用して問題を持っています。
:オブジェクトは、次のようになり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;}
}
私はそれのすべては、LINQのを使用して、子注文ラインだ特定のIDとし、(熱心に)注文をロードしようとしています。私のクエリは次のようになります:
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つだけ含まれています - データベースは間違いなく私が戻る前にorder
周りのforeachを行う場合、私はすべての3つのアイテムを得るか、3.奇妙な話を持っている - これは、データベースをヒット二回ます。
私が代わりにSingle()
を使用するようにクエリを修正しようとしたが、それはどちらか動作しません。
私は、LINQと間違って何かをやっていますか?またはExpand
の私の使用が間違っているのですか?
事前のおかげで、
サイモンます。
注:私は私のNHマッピングを作成するためにFluentNHibernate自動マッピングを使用していますし、私のデータベースはSqliteをデータベース(ファイルではなく、メモリ内)である。
解決
この機能はバグがあると思われます:
FirstOrDefault()はFetchTypeは= NHibernateはのにLINQのと接合破断します
それがTOP 1句を持っている場合、これは問題になる可能性があり、生成されたデータベースクエリを見てみましょう。
NHibernateのにLINQのはまだ遠い生産から準備ができているので、バグのこの種が発生する可能性があることを覚えておいてください。
所属していません StackOverflow