繁体   English   中英

这两个语句之间有什么区别(实体框架)

[英]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 

MSDN回答

摘要:

AddObject将对象状态设置为AddedAttach将其设置为Unchanged 如果之后调用SaveChanges()方法,则上下文将尝试将AddObject添加的对象插入存储,而Attach添加的对象将被视为未更改,并且不会对其执行任何操作。

由于您的示例不正确,因此存在简单的区别。 它不是

context.AddObject(user) 

context.AddObject("UserEntitySet", user)

如果直接在上下文中使用AddObjectAttach ,则必须告诉上下文要添加或附加对象的上下文,如果直接在ObjectSet上使用该实现,则已经以强类型方式包含此信息。

恕我直言这些方法只存在与EFv1(.NET 3.5 SP1)的向后兼容性,其中ObjectSet不存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM