我使用EF 4.1代碼先用SQL CE 4.0EF 4.1代碼優先SQL CE 4.0更新集合例外
我有兩個類
public class Customer
{
public int ID { get; set; }
public string CompanyName { get; set; }
public List<ContactPerson> ContactPersons { get; set; }
}
public class ContactPerson
{
public int ID { get; set; }
public string Name { get; set; }
}
和的DbContext
public class MyDB : DbContext
{
public DbSet<ContactPerson> ContactPersons { get; set; }
public DbSet<Customer> Customers { get; set; }
public MyDB()
{
this.Configuration.LazyLoadingEnabled = true;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>()
.HasMany(c => c.ContactPersons)
.WithRequired()
.WillCascadeOnDelete(true);
}
}
同時在代碼中,我需要更新客戶的ContactPerson的整個集合。
List<ContactPersons> modifiedContactPersons;
Customer customer = MyDB.Customers.Find(ID);
customer.ContactPersons = modifiedContactPersons;
當我打電話MyDB.SaveChanges()我得到以下異常:
同時節省不爲他們的關係暴露的外鍵 性質的實體時發生錯誤。 EntityEntries屬性 將返回null,因爲無法將單個實體標識爲異常的源 。通過在您的實體類型中公開外鍵屬性,可以更輕鬆地處理異常,同時保存 。有關詳細信息,請參閱 InnerException。
用的InnerException:
從 'Customer_ContactPersons' AssociationSet的關係是在 的 '已刪除' 狀態。考慮到多重性約束,相應的 'Customer_ContactPersons_Target'也必須處於'已刪除'狀態。
我明白這意味着什麼,但我無法自己解決問題。 有什麼建議嗎?
您寫道:「您應該迭代與客戶相關的人員並從新列表修改其數據。」我如何以最簡單的方式做到這一點? – esba