[英]Entity Framework self referencing entity deletion
我有這樣的文件夾結構:
Folder1
Folder1.1
Folder1.2
Folder2
Folder2.1
Folder2.1.1
and so on..
問題是如何級聯刪除它們(即,當刪除folder2時,所有子項也將被刪除)。 我無法設置ON DELETE操作,因為MSSQL不允許這樣做。 你能給點建議嗎?
更新:我寫了這個存儲過程,我可以保留它還是需要一些修改?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE sp_DeleteFoldersRecursive
@parent_folder_id int
AS
BEGIN
SET NOCOUNT ON;
IF @parent_folder_id = 0 RETURN;
CREATE TABLE #temp(fid INT );
DECLARE @Count INT;
INSERT INTO #temp(fid)
SELECT FolderId FROM Folders WHERE FolderId = @parent_folder_id;
SET @Count = @@ROWCOUNT;
WHILE @Count > 0
BEGIN
INSERT INTO #temp(fid)
SELECT FolderId FROM Folders WHERE EXISTS
(SELECT FolderId FROM #temp
WHERE Folders.ParentId = #temp.fid)
AND NOT EXISTS
(SELECT FolderId FROM #temp
WHERE Folders.FolderId = #temp.fid);
SET @Count = @@ROWCOUNT;
END
DELETE Folders FROM Folders INNER JOIN #temp ON Folders.FolderId = #temp.fid;
DROP TABLE #temp;
END
GO
通常是存儲的proc或INSTEAD OF觸發器。
那是:
循環級聯/外鍵沖突將不會觸發。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.