如果我首先使用数据库来构建上下文,并将该上下文实例化两次。我想从第一个上下文查询特定实体并将其添加到第二个上下文,使用AddObject和Attach之间有什么不同。 例如
Student stu = context1.Students.First();
context1.Detach(stu);
context2.Attach(stu);
和
Student stu = context1.Students.First();
context1.Detach(stu);
context2.Students.AddObject(stu);
他们之间有什么区别? 提前谢谢!
答案 0 :(得分:4)
Attach方法会将对象或对象图附加到未更改状态。这意味着如果在附加对象后不对对象进行任何修改,则在调用SaveChanges()
方法时,EF不会为该对象发出任何更新/删除命令。
但是当你使用AddObject
方法时,EF会在SaveChanges()
方法中将对象作为新实体插入。
如果context2
已连接到其他数据库并且您要复制该实例,则可以使用AddObject
。否则使用Attach
方法。