【发布时间】:2014-04-09 12:44:15
【问题描述】:
我想构建一个查询,该查询将从连接表中选择一些列(我的数据模型中的多对一关系)。
var q = ses.QueryOver<Task>().Select(x => x.Id, x => x.CreatedDate, x => x.AssigneeGroup.Name, x => x.AssigneeGroup.IsProcessGroup);
在这里,我从 AssigneeGroup 检索属性,这是对另一个表的引用,在我的映射中指定。但是当我尝试运行这个查询时,我得到了
异常:无法解析属性:AssigneeGroup.Name of:Task
所以看起来 NHibernate 无法遵循我的映射中定义的关系,并且不知道为了解析 AssigneeGroup.Name 我们应该从“Task”连接到“Groups”表并检索 Group.Name柱子。 所以,我的问题是,如何构建这样的查询?我有这个表达式:x => x.AssigneeGroup.Name,如何将其转换为正确的标准、投影和别名?或者有没有办法自动做到这一点?这应该是可能的,因为 NHibernate 拥有所有的信息......
【问题讨论】:
-
如果您将其编写为 Criteria 查询,则可以将
SetFetchMode方法与 Join 结合使用,这样您就可以了。
标签: c# nhibernate criteria