我有代碼第一個實體框架。
當我試圖刪除表中有外鍵到其他表的行我得到一個異常。異常處理後,當我嘗試加載我的數據再次證明我試圖刪除所選項目的導航鍵是成爲空試圖刪除後導航鍵丟失
爲什麼出現這種情況,如何解決它。
刪除過程是如此的簡單:
public class Person
{
public int ID {get;set;}
public string Name {get;set;}
public Something Something {get;set;}
public ICollection<Profile> Profile {get;set;}
}
try
{
var p = en.Person.First(t => t.ID == 14);
//p.Something here is not null;
en.Remove(p)
en.SaveChanges(); // I'm get an exception here
}
catch { /*error handling */}
finally
{
var p = en.Person.First(t => t.ID == 14);
//but p.Something here is null;
}
但en.SaveChange()我得到一個異常。
DELETE語句衝突與外鍵約束 「FK_person_profile
這是我班的一個示例。
是東西屬性是一個導航鍵。 在第一選擇東西有價值 但在第二次選擇裏面終於阻止它成爲空
修復了刪除問題之後,現在我在將對象添加到數據庫後遇到同樣的問題。 並且重裝功能不起作用。
有什麼建議嗎?
您可以發佈您的代碼?你的刪除函數和拋出錯誤的方法會很有幫助! –
@MarkOreta:更新問題 – Raika
你的錯誤是因爲有一個**必需的** FK關係,它沒有設置爲級聯刪除(它看起來像你有一個配置文件對象)。您需要將關係設爲可選,刪除配置文件或啓用級聯刪除。 –