2012-02-28 13 views
5

Aşağıdaki ifadelerden hangisinin farkını biliyor musunuz?Bu iki deyim arasındaki fark nedir (Varlık Çerçevesi)

_context.AddObject(user); 

_context.Users.AddObject(user); 

yanı sıra

_context.Attach(user); 

_context.Users.Attach(user); 

Teşekkür

DÜZENLEME

Maalesef bazı karışıklıklar:

ben takın ne amaçlı olduğunu AddObject arasındaki farkı biliyor ve t'de bir fark var mı

AddObject setleri, Added için bu Unchanged için Attach setleri devlet nesne: o yolu AddObject yani

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

cevap

1

Bir ObjectContext, aynı şemaya sahip birden çok kümeye sahip olabilir; bu nedenle, normal kümeyi kullanmak normal olarak daha iyidir. MSDN itibaren yani _context.Users.AddObject(user);

: .NET Framework Sürüm 4

, biz oluşturmak, gerçekleştirmek okuyabilir, silebilir, takmak için ObjectSet nesne üzerinde yöntemleri kullanmak önerilir ve güncelleme işlemleri. ObjectSet, ObjectQuery'den türetir, bu nedenle , bir sorgu nesnesi olarak çalışır. senin örneklerle çünkü basit bir fark vardır

AddObject 
Attach 
ApplyCurrentValues 
ApplyOriginalValues 
DeleteObject 
Detach 
0

MSDN answer

Özeti kullanın. Daha sonra SaveChanges() yöntemini çağırırsanız, bağlamtarafından eklenen bir nesneyi depolama alanına eklemeyi dener; Attach tarafından eklenen bir nesne değişmez olarak kabul edilir ve bunun için herhangi bir eylem gerçekleştirilmez.

0

:

.NET Framework sürüm 4 ile başlayan sürümlerinde, bunun yerine ObjectContext üzerinde tanımlı eşdeğer olanları ait ObjectSet üzerinde tanımlı aşağıdaki yöntemleri kullanabilirsiniz yanlış Eğer eklemek veya doğrudan üzerinde uygulama kullanırsanız wheres için nesneyi eklemek istediğiniz ayarlanmış bağlamı söylemelisiniz bağlama AddObject veya doğrudan Attach kullanırsanız O

context.AddObject(user) 

ama

context.AddObject("UserEntitySet", user) 

değil ObjectSet zaten bu bilgileri güçlü bir şekilde yazılmıştır.

IMHO bu yöntemler, yalnızca ObjectSet'un bulunmadığı EFv1 (.NET 3.5 SP1) ile geriye dönük uyumluluk olarak var olur.