TransactionScope veya DbContext.SaveChanges() kullanmam gerekip gerekmediğini, birden çok CRUD işleminden oluşan işlemimi gerçekleştirmeye yetecek kadar açık değilim. Arka uçta SQL Server kullanıyorum.EF5 DbContext.SaveChanges, işlem işlemini ve geri alma işlemlerini gerçekleştiriyor mu?
cevap
SaveChanges()
'u birden çok kez çağırıyorsanız ve tüm bu değişiklikleri geri almak istiyorsanız, evet TransactionScope
numaralı telefonu kullanmak isteyebilirsiniz. İçerik üzerinde bir kez SaveChanges()
numaralı telefonu arıyorsanız, tüm değişiklikleriniz sahnelerin arkasındaki bir işlemde veritabanına bir kerede gönderilir.
Yalnızca aşağıdaki senaryo için gereken bir onay: Birden çok CRUD için SaveChanges() yöntemini çağırmam durumunda işlemleri, işlemi geri almak için DbContext nesnesini imha etmek zorundayım. – Jas
"DbContext" inin atılması işlemi geri almayı düşünmüyorum. Bu durumda, muhtemelen işlemin otomatik işlemini devre dışı bırakabileceğiniz 'SaveChanges()' için aşırı yükleme seçeneklerine bakmak istersiniz ve AcceptAllChanges() 'i çağırmaktan sorumlu olursunuz. http://msdn.microsoft.com/en-us/library/bb739065.aspx –
Ancak, sağladığınız msdn bağlantısı ObjectContext.SaveChanges() api'nin artık geçersiz olduğunu söylüyor. Ayrıca, ObjectContext.SaveChanges(), SQL Server tarafından atılan bir özel durum durumunda tüm işlemi geri alır. Ayrıca, CRB işlemlerini DbContext kullanarak geri almanın daha kolay bir yolu yok mu? – Jas
İlgili: http://stackoverflow.com/questions/6028626/ef-code-first-dbcontext-and-transactions –