管理Entity Framework中的樹結構

2022-08-04 07:21:07 字數 1386 閱讀 6613

很多時候您需要在資料庫中儲存邏輯樹的層次結構。這個問題有很多種實現方式,但最常見的是使用乙個簡單自關聯的表,如下圖所示

如果您對映此表與實體框架您將自動獲得乙個樹狀結構,您需將關係字段重新命名,因為他們被命名為employee和 employee1,將他們重新命名微parent和childs,這樣使結構更清晰和易於理解。

現在我建立乙個簡單控制台應用程式,以遞迴的方式列印整棵樹,**如下:

public

static

void print(employee employee, int32 level)

", new string('-', level), employee.name);

if (!employee.childs.isloaded)

foreach (employee child in employee.childs)

}

上面的print方法以遞迴的方式列印整棵樹的所有節點,接下來在main方法中呼叫該方法

public

static

void main()

}

實體框架在記憶體中構建整個樹,輸出結果如下:

test

alkampfer

-guardian

--clark

--john

-joe

修改樹的結構很簡單,你只需要修改它的父節點就可以了。**如下:

employee clark = context.employee

.where(e => e.name == "clark").first();

employee joe = context.employee

.where(e => e.name == "joe").first();

clark.parent = joe;

刪除節點時有點麻煩,因為刪除包含子節點的節點時,ef會報告異常。所以最好的做法是建立乙個方法遍歷所有子節點。

public

static

void visit(employee employee, actionvisitaction)

呼叫以上方法,遍歷所有子節點完成刪除。

using (testentities context = new testentities())

值得注意的是以上方法存在效能問題!

外語水平有限,大家可以直接看原文

原文:

管理 管理語錄

1.作為領導者,乙個人必須具有表達清楚準確的自信,確信組織中的每乙個人都能理解事業的目標.2.在任何情況下,責任都有乙個定量,任何一方如果承擔過多的責任,另一方就會相應地減少承擔等量責任。3.管理的藝術在於溝通的技巧和真誠 4.管理是一種嚴肅的愛 5.管理就是讓別人完成事情 6.黑貓,白貓,能抓老鼠...

檔案管理 使用者管理 磁碟管理

檔案管理 檔案管理是作業系統的五大職能之一,主要涉及檔案的邏輯組織和物理組織,目錄的結構和管理。所謂檔案管理,就是作業系統中實現檔案統一管理的一組軟體 被管理的檔案以及為實施檔案管理所需要的一些資料結構的總稱 是作業系統中負責訪問和管理檔案資訊的機構 從系統角度來看,檔案系統 是對檔案 儲存器的儲存...

檔案管理 使用者管理 磁碟管理

1.檔案管理 主目錄 使用者第一次登入linux系統時的工作目錄即為使用者的主目錄。絕對路徑名 絕對路徑名都是以 開頭,表示根目錄。相對路徑名 指的是從工作目錄到某個檔案的路徑名。建立目錄 使用 p引數,則mkdir命令可以同時建立父目錄m子目錄s。刪除目錄 命令rmdir用來刪除目錄。rmdir不...