實體框架(代碼優先) C#如何用實體樹結構遞歸地枚舉子屬性?
我有一個樹結構,其中包含一對多結構中的節點。
Node
|
\--- Children
我需要列舉所有Children(ICollection)。目前,這是多麼我有看代碼:
using (DBContext context = new DBContext()
{
parentNode = (from query in context.Tree
where query.IsSomeWayToIDTheParentNode
select query).ToArray();
}
var tree = SomeRecursiveTreeBuilderMethod(parentNode);
在這段代碼中,在parentNode第1級兒童屬性枚舉,但實際的子節點兒童性不枚舉,因此拋出異常ContextDisposed 。
我試過在整個查詢(parens之後)和context.Tree之後添加.include(inc => inc.Children),但沒有運氣。我可以很容易地在強制枚舉的using語句中調用遞歸'ChildEnumerator(parentNode)'方法,但是我覺得必須有更好的方法來確保對象和子對象(n-deep)全部完全在轉義上下文範圍的時候填充。
你有沒有嘗試'var tree = SomeRecursiveTreeBuilderMethod(parentNode.ToList());'在第一次調用時強制枚舉? – 2013-03-06 23:14:56
該方法無法強制枚舉,因爲它在上下文的範圍之外,因此,當node.Children在低於父節點的級別上被調用時,它會嘗試枚舉處理的上下文並引發異常。 – jermny 2013-03-06 23:19:12
對不起,沒有注意到......爲什麼不在''using'語句中移動遞歸函數調用呢? – 2013-03-06 23:22:47