这两个语句(Entity Framework)有什么区别?

5

有人知道以下语句的区别吗?

_context.AddObject(user);

_context.Users.AddObject(user);

以及

_context.Attach(user);

_context.Users.Attach(user);

谢谢

编辑

抱歉有点混淆:

我知道AddObject和Attach之间的区别,我的意思是在使用AddObject时是否有任何不同,即:

_context.AddObject(user);
_context.Users.AddObject(user);
3个回答

1

一个 ObjectContext 可以有多个具有相同架构的集合,因此最好使用显式集合。例如 _context.Users.AddObject(user);

来自 MSDN

In the .NET Framework version 4, we recommend that you use methods on the ObjectSet object to perform create, read, delete, attach, and update operations. ObjectSet derives from ObjectQuery, so it also works as a query object.

In versions starting with .NET Framework version 4, you can use the following methods defined on ObjectSet instead of the equivalent ones defined on ObjectContext:

 AddObject   
 Attach
 ApplyCurrentValues
 ApplyOriginalValues
 DeleteObject
 Detach

0

你的例子是不正确的,所以有一个简单的区别。它并不是

context.AddObject(user) 

但是

context.AddObject("UserEntitySet", user)

如果您直接在上下文中使用AddObjectAttach,则必须告诉上下文要将对象添加或附加到哪个集合中,而如果您直接在ObjectSet上实现,则已经以强类型方式包装了此信息。
在我看来,这些方法仅作为与EFv1(.NET 3.5 SP1)向后兼容的存在,当时ObjectSet不存在。

0

MSDN答案

摘要:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接