问题标签 [lazy-loading]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
935 浏览

domain-driven-design - 在不延迟加载的情况下访问聚合实体

我想遵循 DDD 理念,而不是直接访问聚合的实体对象。所以,我必须调用根对象来获取关联的实体。但在其他情况下,我并不总是希望在调用根时加载每个关联实体。这是延迟加载的目的吗?

如果我禁用 linq 的延迟加载功能,如何通过根访问实体对象而不加载所有关联的对象?

编辑:

例如,如果我有一个人作为根实体,并且该人具有名称、地址和 OwnedProperties。如果我想获取人员列表以便显示他们的姓名,我不需要每次调用存储库时都加载拥有的属性。相反,在另一个页面上,我可能想要显示 OwnedProperties 列表,但不希望其他信息与调用一起加载。除了创建一个没有该拥有属性的新人员对象之外,仅调用没有拥有属性实体的 Person 的简单方法是什么?

0 投票
3 回答
5310 浏览

wcf - wcf 序列化和休眠延迟加载

我将 .net 2.0 与 NHibernate/ActiveRecord 和 WCF 一起使用。

到目前为止我还没有使用过 NH Lazy load,但是性能损失太大而无法忽略,所以我开始使用它。

从我目前所读到的内容来看,这不是一个简单的主题,使用具有延迟加载和序列化到 WCF 的 NH 实体,但好处实在是太大了,不容忽视。

使用我在这里找到的代码:WCF Serialization With NHibernate,我已经能够让 WCF 识别基本类型。

我也在像这样创建 DataContractSerializer:

我的问题是当我有这样的事情时:

Branch.DefaultPOSCustomer 和 POSCustomer.BelongsToBranch 是两个不相关的实体,但它们是相同的实体,例如 Branch 200 具有 DefaultPOSCustomer 100,而 POSCustomer 具有 BelongsToBranch 200。

问题是,当 WCF 尝试序列化对象图时,它会在 DefaultPOSCustomer 和 BelongsToBranch 之间反弹,就好像没有识别出它们是相同的实体并且它已经序列化了它们,直到它遇到堆栈溢出。

如果我在这些类上关闭 Lazy = true,则序列化工作得很好。

  1. DataContractSerializer 如何判断一个实体已经被序列化了?
  2. 我怎样才能阻止这种行为?
  3. 是否有其他方法可以使用 WCF 序列化延迟加载实体?

ps 我一直在考虑另一种解决方案,创建类似于 NHibernate Proxy 的东西,但是用原始键替换与其他类相关的属性,所以我没有一个 Branch 类型的属性,而是一个类型的属性int 的值为 200。这样我也许可以避免我遇到的循环问题,但我会尝试将此作为最后的手段,因为维护起来会非常复杂。

编辑:我有很多实体,所以为每个实体创建一个 dto 是不可能的,动态创建它会很复杂,所以我宁愿避免这种情况或将其用作最后的手段。我还需要在服务器端做业务逻辑,所以我需要实体而不是原始数据。

编辑:好吧,直接 NH/AR/WCF 的方式不走运。我将继续创建似乎更容易的 DTO。

0 投票
2 回答
11472 浏览

nhibernate - nHibernate 需要延迟加载吗?

我花了很长时间,但我终于让 nHibernate 的 Hello World 工作了。在我进行“延迟加载”之后它起作用了。老实说,我无法告诉你为什么这一切都有效,但它确实有效,现在我正在阅读你不需要延迟加载。有没有人拥有一个让 nHibernate 正常工作的你好世界?你必须有延迟加载吗?我问是因为我想使用 nHibernate,但我需要了解事情是如何工作的。

谢谢你。

你知道没有那么多开销的 hello world 吗?

使用延迟加载更好吗?

编辑:我正在使用 asp.net 3.5。网络应用项目。

0 投票
2 回答
1147 浏览

java - 在视图中休眠打开会话

我正在使用以下方法来解决 hibernate 中的唯一延迟初始化问题。请告诉我它是否会起作用。由于某些原因,我必须在我的持久层强制执行我的事务。

在过滤器中我使用以下代码

这种方法对吗??会不会有什么问题

0 投票
2 回答
1499 浏览

.net - 我可以使用 ADO.Net Entity Framework 延迟加载标量属性吗?

我有一个数据库表Image,其中包含一个巨大的列:Data

一个实体

我宁愿延迟加载那一列,所以当我获得所有图像的列表时,我不会查询所有内容。

我知道我可以将数据放入它自己的列和实体中,如下所示:

两个实体

但是,我必须这样做吗?

0 投票
4 回答
483 浏览

c# - 我的延迟加载方法有缺陷吗?

平台:带有 Resharper 4.1、.NET 3.5 的 Visual Studio 2008 SP1

我有一个带有静态方法的类,GetProperty<T>它懒惰地返回一个属性值。

但是,当我使用上述方法返回属性时,我收到两个警告,指出未分配私有支持字段。但只有在需要时才会分配它们。

替代文字

这个警告可以忽略吗?
-- 或者 --
我加载属性的方法有缺陷吗?

0 投票
4 回答
684 浏览

c# - 我应该为 Web 应用程序中的延迟加载而烦恼吗?

我了解到要进行单例延迟加载,这是要使用的模式:

但更简单的模式是:

这不会是延迟加载。但这真的是我应该在 Web 应用程序中烦恼的事情吗?

0 投票
2 回答
4498 浏览

java - 如何在 Hibernate 中将元素添加到延迟加载的集合而不导致集合加载?

锡纸上写着什么;我想在不强制加载集合的情况下修改 Hibernate 中的集合,因为它是大量数据(约 100,000 条记录,单调增加)。

现在,我通过调用添加一个元素到这个列表中,getEvents ().add (newEvent)这当然会导致events被填充。

这是映射:

我应该怎么做?

0 投票
2 回答
1737 浏览

java - 使用代理的懒惰一对一不起作用

我在经销商和卖家之间建立了一对一的关系,应该懒惰地使用代理。对于定义外键的一方(卖方,引用经销商),这很好用。但从另一方面来说它不起作用——卖家总是急切地加载。我按照“关于延迟加载的一些解释”constrained="true"中的描述进行设置,但这并没有帮助。

以下是使用的映射:

两个类都驻留在一张表中是否有问题?我看到严格来说,关系不受数据库的限制(它不能使用这个模型),但是域模型总是需要两个实体,应用程序可以确保这一点。

0 投票
2 回答
2466 浏览

.net - 延迟加载 Infragistics Ultragrid

有谁知道 Infragistics UltraGrid for Windows Forms 是否支持延迟加载?如果是这样,该怎么做?