1
我在SQL數據庫有這個表:刪除對象的所有子與父/子關係
Folders
-----------
FolderID
Name
ParentFolderID
我有ParentFolderID
和FolderID
之間的外鍵關係,使得它創建一個父/子關係。
當我刪除一個文件夾,我想它也刪除所有的子文件夾。我無法將關係設置爲級聯刪除,因爲顯然SQL Server不允許這樣的關係。但我正在使用實體框架來創建基於這些表的我的類,所以我打算在我的代碼中完成它。
我想只是一個遞歸方法這樣做:
protected void DeleteUserFolder(UserFolder userFolder)
{
if (userFolder.ChildFolders.Count.Equals(0))
{
_entities.UserFolders.Remove(userFolder);
_entities.SaveChanges();
}
else
{
foreach (UserFolder childFolder in userFolder.ChildFolders.ToList())
{
DeleteUserFolder(childFolder);
}
}
}
它不工作,彷彿預期,這只是刪除大約一半我的文件夾。
例如,我有一個名爲Test的父文件夾。測試有兩個子文件夾,Test2和Test3。 Test2也有兩個子文件夾。我試圖刪除Test,但它只是在Test2中刪除了Test3和子文件夾。
我在這段代碼中做錯了什麼?還是有更好的方法來做到這一點?