显式加载 - 与懒加载和急加载有何不同?

15 浏览
0 Comments

显式加载 - 与懒加载和急加载有何不同?

我对Entity Framework还不熟悉,我阅读了关于Entity Framework中不同上下文加载机制的几篇文章。默认情况下启用了延迟加载,但如果您的Web服务器和SQL服务器之间的ping延迟很高,您应该使用急切加载而不是使用延迟加载逐个加载相关项。但有一件事真的让我困惑,那就是显式加载。它是通过禁用延迟加载来实现的,但它本身甚至不是急切加载...我尝试为我的研究做了一些工作...

我发现了不同的情况下生成了不同的SQL查询语句:

1)延迟加载:

- 首先查询Categories表的前3条记录

- 然后对每个Category查询其相关的Products

2)急切加载:

- 首先查询Categories表的前3条记录,并加载其关联的Products

3)显式加载:

- 首先查询Categories表的前3条记录

- 然后对每个Category使用显式加载方式加载其关联的Products

我已经阅读了一些文章,解答了我对急切加载和延迟加载的疑问,但对于显式加载仍然有一些困惑。以下两篇文章对我澄清了我的疑虑:

- [Lazy Loading vs Eager Loading](https://stackoverflow.com/questions/31366236/lazy-loading-vs-eager-loading)

- [Eager, Lazy and Explicit Loading in EF6](https://stackoverflow.com/questions/34627865/eager-lazy-and-explicit-loading-in-ef6)

这些文章确实帮助我解决了疑虑,只是还有一个问题...为什么我要显式加载某些内容...如果我显式加载它然后使用它(显式加载)...最好是在需要时加载它(延迟加载)...到这一点,显式加载没有用处...何时使用显式加载而不是延迟加载?请帮助我解答以下问题:

1)在什么情况下使用哪种加载机制?特别是我们真的需要显式加载吗?如果是的,在什么情况下需要使用显式加载?

2)对我来说,生成的查询语句在延迟加载和显式加载之间几乎相同。延迟加载和显式加载的实际区别是什么?

0