內刪除子對象我已經使用EF生成類爲我的數據庫表:EF從父對象
public partial class Course
{
public Course()
{
this.People = new HashSet<People>();
}
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Person> People { get; private set; }
}
public partial class Person
{
public int ID { get; set; }
public string Name { get; set; }
public virtual Course Course { get; set; }
}
正如你可以看到每個課程都有人收藏。我創建了第二個部分類,以便在刷新EF圖時我的代碼不會被清除。我的問題是如何清除課程對象中的人員列表?
我想:
public partial class Course
{
public void ResetCourse()
{
this.People.Clear();
}
}
,但我得到這個錯誤:
操作失敗:關係不能被改變,因爲一個或多個外鍵的屬性是不可爲空。當對關係進行更改時,相關的外鍵屬性將設置爲空值。如果外鍵不支持空值,則必須定義新的關係,必須爲外鍵屬性指定另一個非空值,或者必須刪除不相關的對象。
這顯然是因爲EF實際上並沒有刪除person對象而只是刪除了因爲它不能有null鍵而拋出的SQL之間的關係。
顯然我應該使用類似 context.DeleteObject(人)
但是過程中反對它沒有參照上下文,我想保持物體內部的代碼,以保持它的簡單的UI碼。
我碰巧使用工作單元的方法,所以你是說我應該把一個函數內部的更新課程和刪除人?我同意這樣做會工作,但是我的代碼比我在這裏給出的要多得多,如果我在哪裏把所有更新的代碼放在UOW中,它將會變得巨大並且很難在後來管理。你碰巧有鏈接到任何示例UOW模式,涵蓋這樣的事情? (現在去搜索) – Jammy
實際上你並沒有在UOW中放置一個函數。您只需爲CRUD操作(或其他需要的操作)創建存儲庫類。但是所有的操作都是使用UOW持久化的,這使得能夠以事務處理的方式執行所有操作。 – daryal