我有一个场景,我希望将实体树序列化为XML文件,然后使用Entity Framework将该实体树恢复到另一个数据库。我很好奇我应该如何添加子实体?我应该简单地反序列化树,然后在父节点上调用context.AddToXXX(xxx)
吗?这会导致所有的孩子吗?
编辑:如果树已经存在但序列化数据不同,那么当前数据会发生什么?
答案 0 :(得分:1)
如果您使用Context.DbSet.Add
方法,它会将对象图中的所有实体标记为新,并尝试在SaveChanges
时插入它们。
如果您使用Context.DbSet.Attach
方法,则上下文将开始跟踪所有实体,但它会将所有实体标记为未经修改,并且在SaveChanges
时不会对它们执行任何操作。< / p>
在任何一种情况下,您都可以在调用Context.Entry().State
之前使用SaveChanges
显式设置实体的状态。