C# EF4.1仅覆盖某些实体类型的保存更改

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

我只想覆盖某些实体类型的ObjectContext.SaveChanges,而保留其他所有类型的默认行为。我可以找到需要保存的实体

我试过这个

   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可能会 处于不一致的状态。内部异常消息:引用 发生完整性约束冲突:属性值 定义之间的引用约束不一致 关系中的主对象和从属对象

  • 我如何让它相信一切都是好的
  • 如果存在需要通过默认SaveChanges保存的依赖项,如何首先执行它们

  • 谢谢

    您不会先执行任何操作。EF具有非常严格的状态机,用于更改实体和关系的状态。一旦任何实体处于意外状态(状态机逻辑不允许的状态),将在保留任何更改之前引发异常

    您可能以不一致的方式进行了一些复杂的更改和修改状态。很难说问题出在哪里,因为您的代码片段没有显示您所做的任何更改,但如果您的实体的状态与它们之间的关系状态不一致,则通常会发生这种异常。而change tracker无法操纵它