gpt4 book ai didi

entity-framework - NHibernate 中的 Lazy 是什么意思

转载 作者:行者123 更新时间:2023-12-02 07:42:30 25 4
gpt4 key购买 nike

我是 NHibernate 的新手 - 也在 EntityFramework 中,我正在学习它们。我在 NHEF 中都看到了 Lazy 关键字,但我无法理解它。您如何为一个五岁的 child 解释 Lazy?这似乎很重要。能用简单的话解释一下吗?

更新:

NHibernate 3.2 代码映射中,我们有:

ManyToOne(t => t.SomeProperty, t => t.Lazy(LazyRelation.Proxy));

LazyRelation 有这个静态值:

public abstract class LazyRelation {
public static LazyRelation Proxy;
public static LazyRelation NoProxy;
public static LazyRelation NoLazy;
}

他们每个人的意思是什么?提前致谢。

最佳答案

延迟加载是 ORM(如 EF、NH 和 Linq2SQL)使用的一种技术,它不会立即检索层次结构中的相关实体。相反,相关实体仅在需要时才被提取,通常是在它们被“导航到”或取消引用时。

例如在类模型中,您可能有一个类 Person,它有一个 Collection(例如 IEnumerable)Pets他/她拥有。

如果在获取Person时使用延迟加载,则不会同时获取相关的Pets集合。这样,就可以节省数据库和内存资源。

但是,如果访问了 Pets 集合(并且假设 ORM 的上下文/ session 仍然可用),那么 ORM 将根据“需要”去获取 Pets。

将此与预先加载(例如 LoadsWith L2SQL 或 Include EF)进行比较,其中调用者明确说明哪些相关实体将与 Person 一起获取。

另见此处:Lazy loading, Deferred Loading and Eager Loading in Entity framework

重新更新Ayende 解释了为什么您会使用无代理延迟加载(相对于代理延迟加载)here .NoLazy 禁用延迟加载(即急切加载)

您可以阅读更多关于用于 implement lazy loading on Wiki 的技术的信息.讨论了 NH 的代理模式实现 here

关于entity-framework - NHibernate 中的 Lazy 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9582586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com