使用LINQ从Sql加载完整图

时间:2009-04-11 13:15:13

标签: .net linq-to-sql eager-loading

假设我们有一个Menu类,它有SubMenus(它的菜单类型相同,因此也可以包含SubMenus和Items)和Items(具有不同的类型),我们将它们存储在两个表中(一个用于菜单,一个用于菜单)对于项目)。 有没有办法使用LINQ to SQL加载Menu类的完整图形(所有SubMenus和Items)?

1 个答案:

答案 0 :(得分:0)

如果在SQL中正确定义关系,LINQToSQL应该通过菜单上的单个查询返回所有菜单/项目。但是,这不会将其作为图形使用,而是作为菜单的枚举(包含相关菜单和项目)。您需要遍历此枚举并自行构建图形。

另一方面,你可能会做这样的事情:

var roots = db.Menus.Where( m => !m.SubMenus.Count == 0 );

然后,roots将是基本菜单的集合。如果您不打算在其上执行任何图形分析算法,但仅打算从顶部到底部遍历它以构建GUI组件,这可能就足够了。