gpt4 book ai didi

linq - 防止在生成的 sql 代码的计数查询中进行不必要的交叉连接

转载 作者:行者123 更新时间:2023-12-03 12:10:03 27 4
gpt4 key购买 nike

我正在使用这个查询:

return from oi in NHibernateSession.Current.Query<BlaInteraction>()
select new BlaViewModel
{
...

NoPublications = oi.Publications.Count(),

...
};

BlaInteraction 包含出版物(即实体)的 IList。要确定发布的数量,实际上并不需要对发布进行所有连接。我可以以某种方式阻止 nhibernate 在生成的 sql 中使用连接(例如使用投影???)?

谢谢。

基督教

PS:

这就是 NH 产生的(稍微改编):
select cast(count(*) as INT) from RelationshipStatementPublications publicatio21_, Publication publicatio22_ inner join Statements publicatio22_1_ on publicatio22_.StatementId=publicatio22_1_.DBId where publicatio21_.StatementId = 22762181 and publicatio21_.PublicationId=publicatio22_.StatementId

这是足够的:
select cast(count(*) as INT) from RelationshipStatementPublications publicatio21_ where publicatio21_.StatementId = 22762181

最佳答案

为什么不能创建另一个查询?

Session.QueryOver<Publication>().Where(x => x.BlaInteractionId == idSentAsParameter).Select(Projections.RowCount()).SingleOrDefault<int>();

我认为这会奏效
return from oi in NHibernateSession.Current.Query<BlaInteraction>()
select new BlaViewModel
{
...
NoPublications = Session.QueryOver<Publication>().Where(x => x.BlaInteractionId == oi.Id).Select(Projections.RowCount()).SingleOrDefault<int>();

...
};

另一个编辑,您是否尝试过 lazy="extra" ?

关于linq - 防止在生成的 sql 代码的计数查询中进行不必要的交叉连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7359783/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com