实体框架:导入实体树



我有一个场景,我想将实体树序列化到XML文件,然后使用实体框架将该实体树恢复到另一个数据库。我很好奇,我应该如何去添加子实体?我是否应该简单地反序列化树,然后在父节点上调用context.AddToXXX(xxx) ?这会影响到所有的孩子吗?

编辑:如果树已经存在,但是序列化的数据不同,那么当前数据会发生什么?

如果您使用Context.DbSet.Add方法,它将标记对象图中的所有实体为新的,并尝试在SaveChanges时插入它们。

如果您使用Context.DbSet.Attach方法,上下文将开始跟踪所有实体,但它会将它们全部标记为未修改,并且当您使用SaveChanges时不会对它们做任何事情。

在这两种情况下,你都可以使用Context.Entry().State在调用SaveChanges之前显式地设置实体的状态。

最新更新