NHibernate如何实现Func <t>参数的赋值。

时间:2016-03-21 16:31:53

标签: c# nhibernate system.reflection

给出类似的东西:

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 个答案:

答案 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