Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json EF核心还原复杂实体_Json_Restore_Ef Core 2.1 - Fatal编程技术网

Json EF核心还原复杂实体

Json EF核心还原复杂实体,json,restore,ef-core-2.1,Json,Restore,Ef Core 2.1,我有一个复杂的实体,它包含多个列表成员,每个成员都包含更多的子列表实体。 我们需要“备份”然后恢复整个对象,因此我们认为将对象序列化为Json非常容易,然后恢复将是一个简单的反序列化,返回到主对象中。 这会产生错误 “无法跟踪实体类型'MasterObject'的实例,因为已在跟踪另一个具有{'Id'}相同键值的实例…” 很明显,它无法识别我还原的对象是正在跟踪的原始对象。 我们尝试分离跟踪的对象,然后重新连接,这对一个点有效;当子列表中删除或添加了一些项目时,它无法提供帮助-跟踪不会帮助我们在

我有一个复杂的实体,它包含多个列表成员,每个成员都包含更多的子列表实体。 我们需要“备份”然后恢复整个对象,因此我们认为将对象序列化为Json非常容易,然后恢复将是一个简单的反序列化,返回到主对象中。 这会产生错误

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

很明显,它无法识别我还原的对象是正在跟踪的原始对象。 我们尝试分离跟踪的对象,然后重新连接,这对一个点有效;当子列表中删除或添加了一些项目时,它无法提供帮助-跟踪不会帮助我们在该时刻之后删除项目。 我们可以计算出确切的更改,然后单独标记为delete等。但我们确实在做EF稍后将要做的事情,还有很多更改需要测试。 我们也试过了

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

但删除/添加的子项也会出现同样的问题。
有没有更好的方法可以尝试恢复复杂实体?

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