1
3
所有这些都与标记为已加载或未加载的集合有关。 线路
全部加载
它应该会回来
如果你省略这行
集合只有在被加载时才被标记为已加载-
然而,在声明之后
总之,经过你的询问
知道了这一点,很明显现在唯一要做的就是:防止发生延迟加载。 实现这一点的最佳方法是防止EF创建能够延迟加载的实体对象,即
就在下面
|
2
5
这不是黑客。这是一个抽象的漏洞。我们应该准备好使用ORM工具(和任何其他内部DSL)来解决抽象泄漏问题。
之后
没有
这是没办法避免的,否则就全算了
更新:如果您不使用可重用的EF工具,那么最好避免使用延迟加载和手动实体加载。在某种意义上,它们与linq查询-表达式树相反。它们对于实现在“旧”平台上加载引用实体是很重要的(如果不是唯一的)选择,在这些平台上,语言中没有“表达式树”,但在.NET/EF中,完整的查询可以“声明式”编写为表达式树,而无需执行(但有延迟的解释),应该有非常充分的理由返回到“手动”加载。 |
3
1
这被称为 Abstraction Leak
当你打电话给
我建议你读一读 The Law of Leaky Abstractions 为了更好地理解,单脚解释是相当复杂的。 它背后的主要思想是,一切都将按计划工作,但当你试图提供一个底层不可靠层的完整抽象时,会比平常慢,但有时,该层会通过抽象泄漏,你会感觉到抽象不能完全保护你的东西。 编辑以澄清:
打电话
意思是,例如,从上面的答案:
换言之,它是在你召唤的那一刻被懒散地执行的
在
是的,它将数据作为上下文的一部分放入内存,并在同一上下文中读取。 |
kaiselwyvrn · 我无法打开Visual Studio项目 1 年前 |
4SadMemeXD · 无法在Django中选择相关类别 2 年前 |
Agrim Singh · 用户数据。名称未显示用户名 2 年前 |
Peloucvo · 用数据库中的数据填充JTable 2 年前 |
Montaser Majid · 用于从多行中提取单行的SQL查询 2 年前 |
Max J. · 用整数作为键将dict写入csv 2 年前 |