當通過EF 6.1.1嘗試插入新實體和它的關係時,出現以下錯誤。該關係無法更改,因爲一個或多個外鍵屬性是不可空的。插入新實體時
注意
我有懶加載和禁用代理的創建。
該關係無法更改,因爲一個或多個 外鍵屬性不可空。當對 關係進行更改時,相關的外鍵屬性將設置爲空值。 如果外鍵不支持空值,則必須定義新的關係 ,必須爲外鍵屬性指定另一個非空值,或者必須刪除不相關的對象。
我仔細地檢查了所有的導航屬性,它們都被認爲是非空的。
我也從對象圖中刪除了所有的子實體,我仍然得到相同的錯誤。與其他表/實體仍有FK關係,但我可以看到它們都解決了。即在調用AddObject之後,但在SaveChanges之前,我可以看到所有關係都已根據相關的FK Id進行了解析/合併。這些只是對現有數據的查找。
所以我不明白的是被設置有什麼關係爲null,或者爲什麼
我有得救就好了其他實體,但這種特殊的實體是行不通的。
我該找什麼?
我應該提供哪些更多信息來幫助解釋該問題?
編輯1
已經把登錄按史蒂夫的建議,這篇文章https://msdn.microsoft.com/en-us/data/dn469464.aspx#Log.Logging但被產生的唯一語句打開的連接,我得到沒有產生其他的語句,當我打電話保存更改。我也運行SQL Profiler,並且沒有在這裏產生的語句!
編輯2
下面是相關表的數據庫圖。我試圖創建記錄的主表是WorkOrders表。用戶,RefList,Employees和ActivePolicies僅用於參考數據。
我通過分配Id屬性而不是導航屬性來設置FK屬性。
應該將數據插入工作訂單,WorkOrderEmployees,WorkOrderEmployeeArtifacts,WorkOrderEmployeePolicies爲好。雖然如果我做不是添加這些到WorkOrders實體和只創建WorkOrders實體沒有孩子我仍然得到相同的錯誤。
由於提前, 皮特
檢查生成的SQL。 https://msdn.microsoft.com/en-us/data/dn469464.aspx –
@SteveGreene謝謝,但沒有產生任何聲明。 EF必須在保存之前進行一些內部檢查?見上面的編輯。 – Pete
您好@Pete,您能否請您顯示您的數據庫圖表以及您嘗試添加數據的表格。如何在插入時分配外鍵關係? –