不能在循环关系上强制执行参照完整性

时间:2016-03-18 06:04:27

标签: integrity

当我在MVC应用程序中保存数据时,这是错误消息

已成功提交对数据库的更改,但更新对象上下文时发生错误。 ObjectContext可能处于不一致状态。内部异常消息:在强制执行参照完整性约束时检测到循环关系路径。不能在循环关系上强制执行参照完整性。

1 个答案:

答案 0 :(得分:0)

我过去曾在实体框架中遇到过这样的问题:

  1. 打开上下文#1
  2. 阅读对象#1
  3. 关闭上下文#1
  4. 做一些工作并导致创建对象#2,它是对象#1的子对象并且引用对象#1
  5. 打开新上下文,将对象#2添加到其DbSet和SaveChanges
  6. 由于在新的上下文中没有跟踪对象#1的状态,因此给出了循环引用警告。

    要解决此问题,请尝试使用DbSet(Of T).Attach方法,如下面的代码所示:

    Using ctx = New AtlasEntities
        modelDefinition = Await ctx.ModelDefinitions.First(Function(f) f.Id=Id)
    End Using
    
    ModelResult = modelDefinition.DoSomeWork()
    
    Using ctx As New AtlasEntities
        ctx.ModelDefinitions.Attach(modelDefinition)
        ctx.ModelResults.Add(ModelResult)
        Dim success = Await ctx.SaveChangesQuickly.ConfigureAwait(False)
    End Using
    
相关问题