gpt4 book ai didi

c# - 延迟加载 DbSet

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:46 25 4
gpt4 key购买 nike

我见过人们包装 DbSet<T>Lazy<T>类别:Lazy<DbSet<T>> .我只能在互联网上找到另一个做 this 的人.

这样做的效果是什么?

最佳答案

EntityFramework 在内部避免做一些它需要在启动时做的昂贵的 Bootstrap ,直到它知道它需要这样做。创建 DbContext(以及其他)是触发 EF 内部一些可能代价高昂的事件的操作之一,这(可能)是该代码将其包装在 Lazy 中的原因,以便如果无论出于何种原因,调用代码都不需要访问 EF 对象,它不会产生该成本。

本文对各种版本的 EF 启动性能有一些有用的见解:https://msdn.microsoft.com/en-gb/data/hh949853.aspx

在这种情况下(并且不知道 GitHub 代码背后的完整上下文,所以这主要是猜测)似乎上下文的 DbSet 被包装在一个单独的 Repository 类,这是相当不标准的 FWIW。他们将 DbContext 定义为 Lazy 实例化 ( here ),因此他们需要对 DbSet 用法执行相同的操作,以避免急切地解析 DbContext 当存储库被实例化时。

关于c# - 延迟加载 DbSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29578938/

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