LINQ To NHibernate 忽略“分组依据”条款

发布于 2024-11-28 03:21:09 字数 1221 浏览 4 评论 0原文

我使用 NHibernate 3.2.0,我无法让 LINQ 提供程序为此语句生成正确的 SQL 查询:

var result = (from translation in session.Query<TmTranslation>()
              where translation.Id > 0
              group translation by translation.Language into grp
              select new { Lang = grp.Key.Code }).ToList();

生成的 SQL

select tmtranslat0_.id                        as id32_,
       tmtranslat0_.status                    as status32_,
       tmtranslat0_.text                      as text32_,
       tmtranslat0_.last_revision             as last4_32_,
       tmtranslat0_.fk_id_translation_unit    as fk5_32_,
       tmtranslat0_.fk_id_translator          as fk6_32_,
       tmtranslat0_.fk_id_last_modifier       as fk7_32_,
       tmtranslat0_.fk_id_last_match_category as fk8_32_,
       tmtranslat0_.fk_id_language            as fk9_32_
from   "TRANSLATION" tmtranslat0_
where  tmtranslat0_.id > 0

当然会导致从数据库加载所有实体并将结果集分组到内存中(结果本身)是正确的)。

我希望

select tmtranslat0_.fk_id_language
from   "TRANSLATION" tmtranslat0_
where  tmtranslat0_.id > 0
group by tmtranslat0_.fk_id_language

生成这样的东西。

我错过了什么吗?

非常感谢。

I use NHibernate 3.2.0 and I cannot make the LINQ provider generate a proper SQL query for this statement:

var result = (from translation in session.Query<TmTranslation>()
              where translation.Id > 0
              group translation by translation.Language into grp
              select new { Lang = grp.Key.Code }).ToList();

The generated SQL is

select tmtranslat0_.id                        as id32_,
       tmtranslat0_.status                    as status32_,
       tmtranslat0_.text                      as text32_,
       tmtranslat0_.last_revision             as last4_32_,
       tmtranslat0_.fk_id_translation_unit    as fk5_32_,
       tmtranslat0_.fk_id_translator          as fk6_32_,
       tmtranslat0_.fk_id_last_modifier       as fk7_32_,
       tmtranslat0_.fk_id_last_match_category as fk8_32_,
       tmtranslat0_.fk_id_language            as fk9_32_
from   "TRANSLATION" tmtranslat0_
where  tmtranslat0_.id > 0

which, of course leads to loading all the entities from the database and grouping the result set in memory (the result itself is correct).

I would like something like this

select tmtranslat0_.fk_id_language
from   "TRANSLATION" tmtranslat0_
where  tmtranslat0_.id > 0
group by tmtranslat0_.fk_id_language

to be generated instead.

Am I missing something?

Thank you very much.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱的十字路口 2024-12-05 03:21:09

我唯一可以建议的是使用 QueryOver API。

The only thing I can suggest, is to use QueryOver API.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文