【发布时间】:2010-10-08 09:05:51
【问题描述】:
我有一个名为 Area 的表,它以分层方式存储区域。表中有一个 Id 和一个 ParentId 列。 ParentId 通过外键链接到表的 Id 列。
当我生成 EDM 时,我得到了两个导航属性,Area1 和 Area2。 我应该如何取回我的区域的树结构,并使用 LINQ to 实体在树中导航?
我可能完全问错了问题,请多多包涵。 :)
【问题讨论】:
标签: c# linq entity-framework
我有一个名为 Area 的表,它以分层方式存储区域。表中有一个 Id 和一个 ParentId 列。 ParentId 通过外键链接到表的 Id 列。
当我生成 EDM 时,我得到了两个导航属性,Area1 和 Area2。 我应该如何取回我的区域的树结构,并使用 LINQ to 实体在树中导航?
我可能完全问错了问题,请多多包涵。 :)
【问题讨论】:
标签: c# linq entity-framework
这是正确的问题。当您基于数据库架构生成时,LINQ 会自动命名子级和父级。
我会检查你的模型的designer.cs,但最有可能的是Area1 是孩子,Area2 是父母。反之亦然。
如果要获取当前 Area 实例的所有子节点:
foreach (Area childArea in currentArea.Area1) {
// do something
}
如果你想要父母:
Area parentArea = currentArea.Area2;
不知道能不能重命名child和parent,应该是可以的。只是没有深入研究。
【讨论】:
我认为简单地重命名属性将消除您的大部分困惑。这些属性之一是当前实例的子代;另一个是当前实例的父级。查看映射细节以确定哪个是哪个。然后更改属性的名称以对应其功能。现在查询应该更容易编写了。
【讨论】: