我试图使用实体框架如何加载嵌套的实体框架对象有效
类别,子类别和产品 以下类别代码到3深树装载到TreeView控件是一个IQueryable<ProductCategory>
其中产品分类为一个EF4.0生成的对象(默认代码生成)
子类别是一个FK回类别表(所以在理论上,我们可以去任何深度,但数据域只会有两个级别)
var container = categories.Where(c=>c.somecondition).Include("Subcategories.Products");
foreach (var cat in container) {
addtoTree(cat);
foreach (var sub in cat.SubCategories)
{
addtoTree(sub);
foreach (var prod in sub.Products) addtoTree(prod);
}
}
这仍然针对每个内部循环迭代发出查询。我是否在EF配置中缺少某些东西(对上下文的更改?)以阻止这种情况的发生?或者还有另外一种写这种代码的方法吗?
(至于现在一个可怕的黑客,我已经创建了一个平展的信息的SQL视图,并且我认为迭代重新搭建手工嵌套的对象......讨厌,但是快!)
发现额外的错误 - 如果你的代码(在我的情况下,在addtoTree(子安葬))试图引用备份的树,你需要包括在包含语句 - 即包括(“Subcategories.Products.Subcategories” )(在这种情况下,多对多的关系) – Andiih