我首先使用 EF 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。
带有内部异常:
来自“Customer_ContactPersons”关联集的关系处于“已删除”状态。给定多重约束,相应的“Customer_ContactPersons_Target”也必须处于“已删除”状态。
我明白这意味着什么,但我无法自己解决问题。有什么建议么?