我有以下模型,我用 nHibernate 创建并映射了它。
使用延迟加载,所以我不需要在开始时为经销商获取车辆。
Public class Dealer
{
public virtual string Name { get;set;}
public virtual IList<Vehicles> Vehicles { get;set;}
}
现在让我们假设经销商有数千辆汽车。
如果我这样做
Dealer.Vehicles.Count
然后NH将选择并拉取所有数据。简单地计数的最佳方法是什么?有没有什么方法可以让我得到计数,而无需在 Dealer Class 中声明一个新的属性(property)dealerCount?
Hibernate 中还有一个功能,我相信它将在新版本的 NH 中实现,称为 Extra Lazy Loading。这能解决问题吗?
最佳答案
额外的延迟加载会发出 sql 而不是为某些操作填充集合,例如 Count
或 Contains
.在流畅的映射中,它用作:
HasMany(x => x.CollectionProperty).ExtraLazyLoad();
或 HBM
<one-to-many lazy="extra" ...
只有当你有大量的集合并且需要特殊的行为时,它才有用。
关于nHibernate 集合计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1757252/