SQL到Nhibernate标准

SQL到Nhibernate标准,sql,nhibernate,fluent-nhibernate,Sql,Nhibernate,Fluent Nhibernate,我将类A映射到表TableA。如何将下一个sql转换为NHibernate标准 SELECT DISTINCT t.Id, (Select COUNT(*) FROM TableA WHERE [Id] = t.Id) FROM TableA AS t 更新1:TableA确实是一个视图。它用于合并两个表中的统计信息。Id不是身份,只是字段,很抱歉有歧义。发件人: 或使用Linq: from a in session.Query<ClassA> group a by a.I

我将类A映射到表TableA。如何将下一个sql转换为NHibernate标准

  SELECT DISTINCT t.Id, (Select COUNT(*) FROM TableA WHERE [Id] = t.Id)
  FROM TableA AS t
更新1:TableA确实是一个视图。它用于合并两个表中的统计信息。Id不是身份,只是字段,很抱歉有歧义。

发件人:

或使用Linq:

from a in session.Query<ClassA>
group a by a.Id into g
select new { g.Key, g.Count())
来自会话中的查询
a组按a.Id分为g组
选择新{g.Key,g.Count())

我有几点意见。首先,这个查询似乎有一个循环引用。第二,我认为你不应该在ID列上查询
DISTINCT
。第三,看起来你在尝试计算
一对多
关系的多个方面。如果是这样,为什么不在e对象,然后您可以执行
MyObject.ChildItems.Count
谢谢您的回复。请查看更新1。由于相关子查询和distinct,这看起来可能是一个效率极低的查询。您是否考虑过改为在t.id上编写一个分组?还没有,但这似乎是一个好主意。谢谢!谢谢!它工作正常s、 顺便说一句,当我添加限制时,在“Id”字段中,结果是不正确的(在我的例子中是3个元素而不是20个元素)。什么会导致这样的问题?
from a in session.Query<ClassA>
group a by a.Id into g
select new { g.Key, g.Count())