【发布时间】:2011-12-02 21:29:47
【问题描述】:
在 EF4 中是否有一种相对简单的方法可以快速加载实体的所有相关实体?我认为扩展方法将是完美的。我有一个场景,我正在使用 POCO,其中一个实体具有其他实体的多个导航属性,而这些实体又具有自己的导航属性。不用说,急切地加载所有内容需要大量的循环和加载。我希望在调用扩展方法时加载并准备好所有属性,以便关闭 LazyLoading。
类似:
using(var context = new MyEntities())
{
var widget = context.Widgets.FirstOrDefault();
widget.RecursivelyLoadAllPropertiesForMe() // magical extension method I wished existed
}
【问题讨论】:
-
为什么要“大量循环”?实际上,您只需要很多
Include运算符,可能带有像Include("Customer.Contacts")这样的虚线路径。为此,每个实体都有一个扩展方法不是问题。但我不确定:您是否正在寻找一种方法来加载所有实体类型的导航属性而不明确指定所有这些Includes? -
您必须在获取小部件之前定义包含。如果您尝试仅通过迭代和移动所有导航属性来加载所有内容,性能将非常糟糕。
-
@Slauma 没错,我不想手动指定所有的包含。
-
您确实意识到使用 LazyLoading 会为您完成这一切! (而且效率很高,因为它只会在您实际要求相关项目时才麻烦)?
标签: entity-framework poco