C# EF4.1仅覆盖某些实体类型的保存更改
我只想覆盖某些实体类型的ObjectContext.SaveChanges,而保留其他所有类型的默认行为。我可以找到需要保存的实体 我试过这个C# EF4.1仅覆盖某些实体类型的保存更改,c#,entity-framework-4,ef-code-first,C#,Entity Framework 4,Ef Code First,我只想覆盖某些实体类型的ObjectContext.SaveChanges,而保留其他所有类型的默认行为。我可以找到需要保存的实体 我试过这个 public override int SaveChanges() { ChangeTracker.DetectChanges(); ChangeTracker.Entries<JobField>().ToList().ForEach( c => { /* write data
public override int SaveChanges()
{
ChangeTracker.DetectChanges();
ChangeTracker.Entries<JobField>().ToList().ForEach( c => { /* write data here */ c.State = EntityState.Unchanged; } );
return base.SaveChanges();
}
public override int SaveChanges()
{
ChangeTracker.DetectChanges();
ChangeTracker.Entries().ToList().ForEach(c=>{/*在此处写入数据*/c.State=EntityState.Unchanged;});
返回base.SaveChanges();
}
但是我得到了以下错误
已成功提交对数据库的更改,但出现错误
更新对象上下文时发生。ObjectContext可能会
处于不一致的状态。内部异常消息:引用
发生完整性约束冲突:属性值
定义之间的引用约束不一致
关系中的主对象和从属对象
谢谢您不会先执行任何操作。EF具有非常严格的状态机,用于更改实体和关系的状态。一旦任何实体处于意外状态(状态机逻辑不允许的状态),将在保留任何更改之前引发异常 您可能以不一致的方式进行了一些复杂的更改和修改状态。很难说问题出在哪里,因为您的代码片段没有显示您所做的任何更改,但如果您的实体的状态与它们之间的关系状态不一致,则通常会发生这种异常。而change tracker无法操纵它