Entity Framework 刪除一條記錄包括全部子記錄

Entity Framework 要刪除一條記錄,當其含有子記錄時會報錯:數據庫

操做失敗: 沒法更改關係,由於一個或多個外鍵屬性不能夠爲 null。對關係做出更改後,會將相關的外鍵屬性設置爲 null 值。若是外鍵不支持 null 值,則必須定義新的關係,必須向外鍵屬性分配另外一個非 null 值,或必須刪除無關的對象。spa

解決辦法:對象

先刪除子記錄,再刪除父記錄。子記錄必須是從數據庫查出來的。blog

//查詢子記錄
var contas = ConsignLighteringContaRepository.Entities.Where(t => t.BillId == bill.Id);

//刪除子記錄
ConsignLighteringContaRepository.Delete(contas, false);

//刪除父記錄
ConsignLighteringBillRepository.Delete(bill, false);

注意:這裏是查詢全部子記錄,不是一個一個查,如下是錯誤寫法:it

//查詢子記錄
foreach(var item in bill.Contas){
    var conta = ConsignLighteringContaRepository.Entities.First(t => t.Id == item.Id);
    //刪除子記錄
    ConsignLighteringContaRepository.Delete(conta, false);
}

//刪除父記錄
ConsignLighteringBillRepository.Delete(bill, false);

由於正在遍歷,因此沒法刪除,會報錯。class

相關文章
相關標籤/搜索