是否有人知道以下陈述的差异(如果有的话)?
_context.AddObject(user);
_context.Users.AddObject(user);
以及
_context.Attach(user);
_context.Users.Attach(user);
由于
修改
抱歉有些困惑:
我知道AddObject和Attach之间的区别,我的意思是你使用AddObject的方式有什么不同,即
_context.AddObject(user);
_context.Users.AddObject(user);
答案 0 :(得分:1)
ObjectContext可以有多个具有相同模式的集合,因此通常最好使用显式集合。即_context.Users.AddObject(user);
来自MSDN:
在.NET Framework第4版中,我们建议您使用方法 要执行创建,读取,删除,附加和的ObjectSet对象 更新操作。 ObjectSet派生自ObjectQuery,所以它也是 作为查询对象。
在以.NET Framework版本4开头的版本中,您可以使用 以下在ObjectSet上定义的方法而不是等效的方法 在ObjectContext上定义:
AddObject Attach ApplyCurrentValues ApplyOriginalValues DeleteObject Detach
答案 1 :(得分:0)
要点:
AddObject
将对象状态设置为Added
,Attach
将其设置为Unchanged
。如果之后调用SaveChanges()
方法,则上下文将尝试将AddObject
添加的对象插入存储,而Attach
添加的对象将被视为未更改且不会执行任何操作它
答案 2 :(得分:0)
由于您的示例不正确,因此存在简单的区别。它不是
context.AddObject(user)
但是
context.AddObject("UserEntitySet", user)
如果您直接在上下文中使用AddObject
或Attach
,那么如果您直接在ObjectSet
上使用该实现,则必须告诉您要添加的内容或将对象附加到哪个上下文将此信息以强类型方式包装。
恕我直言,这些方法仅与EFv1(.NET 3.5 SP1)的向后兼容性存在,其中ObjectSet
不存在。