我正在使用此查询:
return from oi in NHibernateSession.Current.Query<BlaInteraction>()
select new BlaViewModel
{
...
NoPublications = oi.Publications.Count(),
...
};
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
这就足够了:
select cast(count(*) as INT) from RelationshipStatementPublications publicatio21_ where publicatio21_.StatementId = 22762181
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现的最佳解决方案是使用 FNH 公式:
mapping.Map(x => x.NOPublications).Formula("(select count(distinct RelationshipStatementPublications.PublicationId) from RelationshipStatementPublications where RelationshipStatementPublications.StatementId = DBId)");
public virtual int NOPublications {get; private set;}
Run Code Online (Sandbox Code Playgroud)
当我从域映射到视图模型时,我使用:
NoPublications = oi.NOPublications,
Run Code Online (Sandbox Code Playgroud)
基督教
| 归档时间: |
|
| 查看次数: |
446 次 |
| 最近记录: |