2011-02-24 22 views
8

Entity Framework, bağlamınızda SaveChanges'i aradığınızda bir işlem kullanıyor mu? İşlemleri tamamen kapatmanın veya belirli bir varlığın bir işlemden vazgeçmesinin bir yolu var mı?Entity Framework işlemleri nasıl işler?

AdventureWorksEntities db = new AdventureWorksEntities(); 

Product p1 = new Product(); 
// ... 

Product p2 = new Product(); 
// set invalid data 

db.Products.AddObject(p1); 
db.Products.AddObject(p2); 

// what happens when I call this - does it roll back everything? 
// can i tell p2 not to participate in the transaction? 
db.SaveChanges(); 

cevap

7

biri zaten yoksa Evet, EF4'ü yeni bir hareket yaratacaktır. Bir akım işlem varsa, Varlık Framework veri kaynağına karşı operasyonlar için bu işlemi kullanır, SaveChanges çağırdığınızda

http://msdn.microsoft.com/en-us/library/bb896325.aspx

bakınız. Aksi takdirde, işlem için yeni bir işlemi oluşturur. , EntityTransaction, Transaction veya TransactionScope kullanarak işlemleri tanımlayabilirsiniz.

Hayır

, işlemden tek varlık muaf tutmak hiçbir yolu yoktur.

Üçüncü sorgunuzdan - işlemlerin tamamen kapatılıp kapatılamayacağı hakkında - emin değilim, ancak yukarıdaki alıntıya dayanarak tahmin edemiyorum.

Bunu duymak istediğin cevap değil, ama P2'nin P1'in başarılı olup olmadığına bakılmaksızın kaydetmek istiyorsan, P2'yi farklı nesne bağlamına kaydetmelisin. İşlemleri kapatma ile ilgili en son soru hakkında

+0

Bir yanıt eklememeye çalışın, silin ve ardından başka bir tane eklemeyin. Bunun yerine, orijinal cevabınızı düzeltin. – RPM1984

+0

Not - teşekkür ederim :) –

+0

Bu soruya göz attığınızda orijinal silinen cevap hala görünüyor mu? –