2016-03-21 43 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

我尝试了第二个参数变量来算出这个和我得到的最接近的是铸造身体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"); 

它允许QueryOver翻译所有的工作SQL查询。 (我猜首先是HQL,然后转换为SQL。)但执行后,你应该找到你的变量不变,仍然null

相关问题