NHibernate 计算列

3
我有一个实体(“A”),我正在通过NHibernate进行持久化。这个实体可能在数据库中有几个类型为“B”的子项,当我检索实体A时,我希望有一个属性来指示属于A的实体B的计数。我不想在这里使用集合,因为我不必检索所有B实体只是为了计数。
做我想要的伪SQL可能看起来像:
select a.*, count(b.*) from a left join b on b.aid = a.id

这是否可以通过NHibernate实现,特别是LINQ提供程序?

1
重复:http://stackoverflow.com/questions/3062850 - brainimus
3个回答

3

1

你能将nHibernate绑定到视图吗?

CREATE VIEW A_augmented
AS
SELECT A.*
       ,(SELECT COUNT(*) FROM B WHERE B.aid = a.id) AS ChildCount
FROM A

我知道这个SQL语句相对比较幼稚,但它是一种在有效的SQL语言中表达它的简单方式。


1
你可以使用公式将属性映射到SQL表达式。Ayendes网站上有一个非常相似的例子,使用起来很方便,但可能会有一些副作用需要注意。计算列当然不是实时更新的,它只是在实体加载时快照。
您还可以使用HQL以简单的语法获取大小:
select a, size(a.Children)
from a

当然,这也会返回一个快照,但您的业务逻辑已经了解到这一点,因此这不是副作用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接