【发布时间】:2017-05-16 02:59:32
【问题描述】:
我有一个场景,我想将实体树序列化为 XML 文件,然后使用 Entity Framework 将该实体树恢复到另一个数据库。我很好奇我应该如何添加子实体?我是否应该简单地反序列化树然后在父节点上调用context.AddToXXX(xxx)?这也会导入所有的孩子吗?
编辑:如果树已经存在但序列化数据不同,当前数据会发生什么?
【问题讨论】:
标签: c# entity-framework
我有一个场景,我想将实体树序列化为 XML 文件,然后使用 Entity Framework 将该实体树恢复到另一个数据库。我很好奇我应该如何添加子实体?我是否应该简单地反序列化树然后在父节点上调用context.AddToXXX(xxx)?这也会导入所有的孩子吗?
编辑:如果树已经存在但序列化数据不同,当前数据会发生什么?
【问题讨论】:
标签: c# entity-framework
如果您使用Context.DbSet.Add 方法,它会将对象图中的所有实体标记为新实体,并在您SaveChanges 时尝试插入它们。
如果您使用Context.DbSet.Attach 方法,上下文将开始跟踪所有实体,但它会将它们全部标记为未修改,并且在您SaveChanges 时不会对它们做任何事情。
无论哪种情况,您都可以在调用SaveChanges之前使用Context.Entry().State明确设置实体的状态。
【讨论】: