我正在尝试使用NH3执行Linq查询。 知道下面的SQL困难,我知道这是不可能的,但理想情况下,我想通过一个实体来完成这个组,并将其整个检索到。 类似的东西:
var list = from proposals in Session.Query<Proposal>()
group proposals by proposals.Job
into jobGrouping
select new {
Job = jobGrouping.Key,
TotalProposals = jobGrouping.Count()
};
这会生成非法的SQL查询,因为它尝试检索整个Job实体,但仅按其Id进行分组。
我尝试过复合字段分组:
var list = from proposals in Session.Query<Proposal>()
group proposals by new { proposals.Job.Name, proposals.Job.Status}
into jobGrouping
select new {
Job = jobGrouping.Key.Name,
Status = jobGrouping.Key.Status,
TotalProposals = jobGrouping.Count()
};
但是每当我尝试这个时,我会在NHibernate尝试构建表达式树时得到一个异常:
已添加具有相同键的项目。
任何人都知道NHibernate是否有办法实现这一目标?
谢谢, 伊兰
答案 0 :(得分:0)
我有一个类似的问题,尝试多次使用.Join扩展方法,其中表达式树别名直接来自lambda参数名称。
我对SQL Like linq语法的了解有限,但我认为它会以某种方式转换为自动分配lambda别名的流畅等效语法。
如果是这种情况,可能会将此翻译为具有显式唯一labmda别名的流畅语法,可以避免此问题