我有一个名为Area的表,它以分层方式存储区域。表中有Id和ParentId列。 ParentId与表的Id列的外键链接。
当我生成EDM时,我得到两个导航属性,Area1和Area2。 我怎么能回到我的区域的树结构,并使用LINQ to entities在树中导航?
我可能完全在问错误的问题,请耐心等待。 :)
答案 0 :(得分:1)
这是正确的问题。当您基于数据库模式生成时,LINQ会自动命名子项和父项。
我会检查designer.cs的模型,但很可能Area1是孩子,而Area2是Parent。或反之亦然。
如果您想获得当前Area实例的所有子项:
foreach (Area childArea in currentArea.Area1) {
// do something
}
如果你想要父母:
Area parentArea = currentArea.Area2;
我不知道你是否可以重命名孩子和父母,这应该是可能的。只是没有深入研究。
答案 1 :(得分:1)
我认为简单地重命名属性将消除您的大部分困惑。其中一个属性是当前实例的子项;另一个是当前实例的父级。查看映射详细信息以确定哪个是哪个。然后更改属性的名称以对应其功能。现在查询应该更容易编写。