2009-02-18 161 views
0

我有一個名爲Area的表格,它以分層方式存儲區域。表中有一個Id和一個ParentId列。 ParentId使用表的Id列的外鍵鏈接。使用LINQ將實體導航到實體

當我生成電火花,我得到兩個導航屬性,Area1和Area2。 我該如何找回我的區域的樹結構,並使用LINQ導航到實體?

我可能會問完全錯誤的問題,請耐心等待。 :)

回答

1

它是正確的問題。當您基於數據庫模式生成時,LINQ會自動爲子代和父代進行命名。

我會檢查您的模型的designer.cs,但最有可能的Area1是孩子和Area2是父。或者反之亦然。

如果你想獲得當前區域實例的所有兒童:

foreach (Area childArea in currentArea.Area1) { 
    // do something 
} 

如果您希望父:

Area parentArea = currentArea.Area2; 

我不知道你是否可以重命名子和父,它應該是可能的。只是沒有深入瞭解這一點。

1

我認爲簡單地重命名屬性將消除大部分的混淆。其中一種屬性是當前情況的子女;另一個是當前實例的父級。看看映射的細節,找出哪個是哪個。然後更改屬性的名稱以對應其功能。現在查詢應該更容易編寫。