给出类似的东西:
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如何实现这一目标?
答案 0 :(得分: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
。