当前位置: 首页 > 编程语言 > C#

EagerlyLoadingSelf-ReferencingTable分享

时间:2023-04-10 21:25:08 C#

EagerlyLoadingSelf-ReferencingTable我有一个标准的自引用表Categories。在我的实体模型中,我创建了子关联和父关联。是否可以在不延迟加载的情况下加载整个Category对象?如果我使用下面的代码,它只会加载到第二层。db.Categories.MergeOption=System.Data.Objects.MergeOption.NoTracking;varquery=fromcindb.Categories.Include("Children")wherec.IsVisible==trueorderbyc.SortOrder,c.Idselectc;如果我已经加载了所有类别对象,是否可以加载引用?加载它的一种方法是多次添加Children属性db.Categories.Include("Children.Children.Children.Children.Children")但这会产生非常长的疯狂T-SQL代码,而且它也不会我想要的是。不,这是不可能的。考虑:所有LINQtoEntities查询都转换为SQL。哪个SQL语句在自引用层次结构中包含无限深度?在标准SQL中,没有一个。如果T-SQL中有这样的扩展,我不知道它是什么,而且我认为EF提供程序也没有。好的,您可以考虑使用Load方法。如果(!category.Children.IsLoaded)category.Children.Load();当然,类别实体需要通过ObjectContext来追踪。这里有一个更好的解释,实体框架-工作与递归-层次结构-包括-似乎-不。如果我有多个实体,我习惯于实现的一种方法是使用递归cte和存储过程来获取它们的id使用实体框架:这是使用entityframeworkand以上代码的代码路径为C#学习教程:急切加载自引用表共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: