EF Core还原复杂实体

时间:2019-09-17 16:18:49

标签: json restore ef-core-2.1

我有一个复杂的实体,其中包含几个List成员,每个成员都包含其他子列表实体。 我们需要“备份”然后还原整个对象,因此我们认为将对象序列化为Json很容易-然后还原将是简单的反序列化回到主对象。 产生错误

  

“无法跟踪实体类型'MasterObject'的实例,因为已经跟踪了另一个具有相同'{'Id'}键值的实例。...

很明显,它无法将还原的对象识别为正在跟踪的对象。 我们尝试分离出跟踪的对象,然后重新附加,这可以工作到一定程度;当子列表中删除或添加了一些项目时,它无济于事-在那之后,跟踪将无法帮助我们删除项目。 我们可以找出确切的更改,然后将其分别标记为删除等。但是无论如何,我们确实正在做EF以后将要做的事情,并且有很多更改需要测试。 我们还尝试了

  

“ Context.Entry(myObject).CurrentValues.SetValues(objectFromBackup)”

,但是对于已删除/已添加的子项目也会发生相同的问题。 有没有更好的方法可以还原我们可以尝试的复杂实体?

1 个答案:

答案 0 :(得分:0)

我们通过在所有需要还原的表上使用序列而不是标识来解决此问题,然后通过EF核心将其删除并重新添加,这似乎可行。 仍然欢迎其他任何建议。