2014-04-01 51 views

回答

0

你最簡單的選擇是建立在SQL Server數據庫上的級聯刪除。保存成功後,您仍然需要刪除客戶端上的子項,但不需要在服務器上執行其他任何操作。

另一種方法是你BeforeSaveEntities方法中實際獲取孩子的實體,將它們添加到保存地圖,然後將其刪除(將其標記爲在EF刪除)。

+0

你的第一個建議,我嘗試過,但它不工作。我記得我在某處讀到舊的EF不支持cascase刪除。上週末,我將EF從5.0升級到6.1,但仍然無法正常工作。當我嘗試刪除父實體而沒有將子實體標記爲已刪除時,我得到了錯誤,如'UPDATE語句與FOREIGN KEY約束衝突'「FK_dbo.XXX_dbo.YYY'。但是,當我從Visual Studio中刪除父行Database Explorer中,級聯刪除工作正常。所以,是不是我錯過了什麼? – newman

+0

你的第二個建議,你怎麼'將它們添加到保存地圖,然後刪除them'?我試過這種方法,但卡住了。 – newman

+0

第三種方法是存儲過程或動態SQL,由EF用'Context.Database.ExecuteSqlCommand(deleteSql)頒發'。你可能想要做的是,同一個事務中。幸運的是,你可以在同一個事務中登記該命令。?那微風使用您的其他節省怎麼我沒有做我自己,但我知道誰擁有人也許有文件讓周杰倫告訴你:-) – Ward

相關問題