2012-05-22 99 views
0

我試圖使用「刪除」方法從我的上下文中刪除對象。 但我得到的UpdateException說:實體框架4.1 - 使用包含或加載刪除實體時的DbUpdateExcepetion

ORA-01407:不能更新( 「NAMUR_TEST_ALERTE」 「TX_HST_TRACE_DATA」 「TRD_ID_INFO_TRACE」。)爲NULL

其中TRD_ID_INFO_TRACE是我的外鍵。

這裏是我的查詢LINQ:

List<Trace> query = (from t in Repository.DataContext.Trace           
            .Include("Datas") 
             select t).ToList<Trace>(); 

如果我抑制包括指令。它工作正常。

但我不能這樣做,因爲這樣做的目的是檢索數據,使用序列化存儲它們,最後從數據庫中刪除它們。

如何使刪除保持我的包含?

在此先感謝!

回答

0

問題是您的模型沒有配置級聯刪除,但您的數據庫可能是。如果model沒有配置級聯刪除,刪除主體將強制FK在依賴實體中設置爲null,並且此更改將作爲更新發送到數據庫。

解決此問題的一種方法是在EDMX或ftuent API中配置您的關係(它應該默認用於根據約定進行映射)以級聯刪除。其他方法是在刪除跟蹤實例之前刪除代碼中的所有相關數據實例。

+0

你是對的。 我在模型中添加了WillCascadeOnDelete並解決了我的問題。 謝謝! – user1005016