nHibernate 集合计数

标签 nhibernate collections lazy-loading

我有以下模型,我用 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 而不是为某些操作填充集合,例如 CountContains .在流畅的映射中,它用作:

HasMany(x => x.CollectionProperty).ExtraLazyLoad();

或 HBM
<one-to-many lazy="extra" ...

只有当你有大量的集合并且需要特殊的行为时,它才有用。

关于nHibernate 集合计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1757252/

相关文章:

nhibernate - 在Fluent NHibernate映射中指定紧急加载

c# - 用于调试集合的 GridView ?

java - HashMap内存效率

java - JPA 延迟加载和泛型

javascript - 我不知道当 'lazy loading' JavaScript 时会发生这种情况

asp.net - 使用 NHibernate 实现多语言域对象的最佳方法是什么?

使用 ICriteria 的 NHibernate 相关子查询

c# - Nhibernate:谁负责非 web 应用程序中的事务管理

java - 一个主机线程中的多个线程修改主机线程中的同一对象

java - 是否值得使用 Hibernate Bytecode Enhancement 机制?