什么时候懒惰评价没用?

Che*_*ian 5 orm design-patterns eager lazy-evaluation

延迟执行几乎总是一个福音.但是有些情况下,这是一个问题,你诉诸"获取"(在Nhibernate)急切地获取它.

你知道懒惰的评价可以咬你的实际情况吗?

Eri*_* J. 0

延迟加载资源涉及每次加载的请求者和源之间的来回行程。对于 NHibernate,这意味着从应用程序到数据库(通常位于不同的服务器上)。

每次行程通常都会产生相关开销(对于 NHibernate 或任何其他数据库查询来说肯定存在)。

如果您知道您将需要全部或大部分数据,那么您最好一次性提取它,并且只产生一次开销。

一个典型的例子是,当您需要拉回对象列表以填充组合框时(通常这些对象是配置对象)。每次将列表成员添加到组合框时,延迟加载都会返回到数据库。由于您将整个列表放入组合框中,因此您会因延迟获取每个对象而产生大量额外的开销。