我有以下使用nHibernate创建和映射的模型。
使用延迟加载,因此我不需要一开始就为经销商提供车辆。
Public class Dealer
{
public virtual string Name { get;set;}
public virtual IList<Vehicles> Vehicles { get;set;}
}
现在,假设经销商有数千辆汽车。
如果我执行
Dealer.Vehicles.Count
,那么NH将选择并提取所有数据。简单地计数是最好的方法是什么?有什么方法可以使我无需在Dealer类中声明A new property DealerCount就可以计数吗?
Hibernate中还有一个功能,我相信它将在NH的新版本Extra Extra Lazy Loading中实现。这样可以解决问题吗?
最佳答案
额外的延迟加载将发出sql,而不是针对某些操作(例如Count
或Contains
)填充集合。在流利的映射中,其用作:
HasMany(x => x.CollectionProperty).ExtraLazyLoad();
或HBM
<one-to-many lazy="extra" ...
仅当您有大量收藏品并且需要特殊行为时,它才有用。