2016-03-21 8 views
0

考えると何かのように:NHibernateはFunc <T>パラメータの割り当てをどのようにして達成しますか?

Post posts = null; 
Author author = null; 
blog = session.QueryOver<Blog>() 
       .Where(x => x.Id == 1) 
       .JoinAlias(x => x.Posts,() => posts) 
       .JoinAlias(() => posts.Author,() => author) 
       .SingleOrDefault(); 

NHibernateのは、上記の値は、これを理解するために私が試したJoinAlias

の第二引数に渡された変数にすることができ、私が手に最も近いが、鋳造されましたBodyをMemberExpressionにキャストした後、式をConstantExpressionにキャストしますが、読み込み専用の.Valueを作成し、渡された参照を変更することはありません。

NHはこれをどのようにして実現しますか?

答えて

1

これはありません。

これは単なる構文です。 postsまたはauthorには何も割り当てられません。これらの変数は、そのようなhereから取った次の例のように、後の制限では別名、としてそれらを使用できるようにするためにここにいる:

Cat catAlias = null; 
Kitten kittenAlias = null; 
IQueryOver<Cat,Cat> catQuery = 
    session.QueryOver<Cat>(() => catAlias) 
     .JoinAlias(() => catAlias.Kittens,() => kittenAlias) 
     .Where(() => kittenAlias.Name == "Tiddles"); 

それが作業SQLクエリにすべてのことを翻訳QueryOverすることができます。 (私は実際にはHQLを最初に推測してからSQLに変換すると思います)。しかし実行後、変数は変更されていません。まだnullです。

関連する問題