[英]What is the difference between these two statements (Entity Framework)
有没有人知道以下陈述的差异(如果有的话)?
_context.AddObject(user);
_context.Users.AddObject(user);
以及
_context.Attach(user);
_context.Users.Attach(user);
谢谢
编辑
对不起有些困惑:
我知道AddObject和Attach之间的区别,我的意思是你使用AddObject的方式有什么不同
_context.AddObject(user);
_context.Users.AddObject(user);
ObjectContext可以有多个具有相同模式的集合,因此通常最好使用显式集合。 ie _context.Users.AddObject(user);
来自MSDN :
在.NET Framework版本4中,我们建议您使用ObjectSet对象上的方法来执行创建,读取,删除,附加和更新操作。 ObjectSet派生自ObjectQuery,因此它也可用作查询对象。
在以.NET Framework版本4开头的版本中,您可以使用在ObjectSet上定义的以下方法,而不是在ObjectContext上定义的等效方法:
AddObject Attach ApplyCurrentValues ApplyOriginalValues DeleteObject Detach
摘要:
AddObject
将对象状态设置为Added
, Attach
将其设置为Unchanged
。 如果之后调用SaveChanges()
方法,则上下文将尝试将AddObject
添加的对象插入存储,而Attach
添加的对象将被视为未更改,并且不会对其执行任何操作。
由于您的示例不正确,因此存在简单的区别。 它不是
context.AddObject(user)
但
context.AddObject("UserEntitySet", user)
如果直接在上下文中使用AddObject
或Attach
,则必须告诉上下文要添加或附加对象的上下文,如果直接在ObjectSet
上使用该实现,则已经以强类型方式包含此信息。
恕我直言这些方法只存在与EFv1(.NET 3.5 SP1)的向后兼容性,其中ObjectSet
不存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.