2012-02-28 59 views
5

是否有人知道下列陳述的差異(如果有的話)?這兩個陳述之間的區別是什麼(實體框架)

_context.AddObject(user); 

_context.Users.AddObject(user); 

以及

_context.Attach(user); 

_context.Users.Attach(user); 

感謝

編輯

對不起有些混亂:

我知道ADDOBJECT之間的差異,連接,我的意思是t有沒有什麼區別他的方法使用ADDOBJECT即

_context.AddObject(user); 
_context.Users.AddObject(user); 

回答

1

ObjectContext可以有多個具有相同模式的集合,所以通常使用顯式集合會更好。即_context.Users.AddObject(user);

MSDN

在.NET Framework 4版,我們建議您使用 的對象集對象的方法來進行創建,讀取,刪除,連接和 更新操作。 ObjectSet派生自ObjectQuery,所以它也作爲查詢對象工作。

在開始.NET Framework版本4的版本中,你可以使用對象集定義,而不是等同的 上的ObjectContext定義的 以下方法:

AddObject 
Attach 
ApplyCurrentValues 
ApplyOriginalValues 
DeleteObject 
Detach 
0

MSDN answer

摘要:

AddObject設置對象狀態AddedAttach套它Unchanged。如果事後調用SaveChanges()方法,上下文將嘗試將一個由AddObject添加的對象插入到存儲中,而由Attach添加的對象將被視爲未更改,並且不會執行任何操作。

0

有,因爲你的例子簡單的區別是不正確的。這不是

context.AddObject(user) 

context.AddObject("UserEntitySet", user) 

如果上下文,你必須告訴方面要添加或你的對象附加到何在,如果您使用的直接執行上設置使用AddObjectAttach直接ObjectSet它已經以強類型的方式包裝了這些信息。

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

相關問題