【发布时间】:2009-04-11 13:15:13
【问题描述】:
假设我们有一个 Menu 类,它具有 SubMenus(这是相同类型的 Menu,因此也可以有 SubMenus 和 Items)和 Items(具有不同类型),我们将它们存储在两个表中(一个用于 Menus,一个用于对于项目)。 有什么方法可以使用 LINQ to SQL 加载 Menu 类的完整图形(其所有子菜单和项)?
【问题讨论】:
标签: .net linq-to-sql eager-loading
假设我们有一个 Menu 类,它具有 SubMenus(这是相同类型的 Menu,因此也可以有 SubMenus 和 Items)和 Items(具有不同类型),我们将它们存储在两个表中(一个用于 Menus,一个用于对于项目)。 有什么方法可以使用 LINQ to SQL 加载 Menu 类的完整图形(其所有子菜单和项)?
【问题讨论】:
标签: .net linq-to-sql eager-loading
如果您在 SQL 中正确定义关系,LINQToSQL 应该通过对菜单的单个查询为您返回所有菜单/项目。但是,这不会让它重新用作图形,而是用作菜单的枚举(带有相关的菜单和项目)。您需要遍历此枚举并自行构建图表。
另一方面,您也许可以这样做:
var roots = db.Menus.Where( m => !m.SubMenus.Count == 0 );
然后,roots 将是基本菜单的集合。如果您不打算对其执行任何图形分析算法,而只是打算从上到下遍历它以构建 GUI 组件,这可能就足够了。
【讨论】: