Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 23237|Yanıt: 1

[Kaynak] Entity Framework'te toplu gönderim ve işlem işleme

[Bağlantıyı kopyala]
Yayınlandı 8.04.2017 22:10:01 | | |

Entity Framework'te SaveChanges() kullanımı çok sıktır ve tek bir veri değişikliği veya silindikten sonra SaveChanges() çağrısı etki kayıtlarının sayısını döndürür.

Toplu modifikasyon veya toplu verilerin silinmesini kullanmak için SaveChanges(false)+AcceptAllChanges() yöntemine ihtiyacınız var.



SaveChanges(false), EF'nin veritabanında bir işlem yapması gerektiğine dair bir bildirimdir; bu işlem bellekte bekte ve gerektiğinde geri alınabilir; örneğin AcceptAllChange() commit gerçekten başarılı olur ve EF SaveChanges(false) işlemini geri alır.



Dağıtık işlem işlemleriyle uğraşırken, bunu yönetmek için TransactionScope kullanmak gereklidir ve çoğu zaman şöyle yazacağız:


Ama böyle yazmak riskli, yanlış
Örneğin, bağlam1. SaveChanges() başarılı oldu, bağlam2. SaveChanges() sorunlu, kapsamdayız. Complete() işlemi tamamlandığında ve Context1 başarıyla yürütüldüğünde sonlanacaktır

(Benim pratiğimde, yukarıdakiler aslında normal şekilde geri alınabilir, bağlam varsa1. SaveChanges() başarılı oldu, bağlam2. SaveChanges() sorunlu, hiçbiri başarılı şekilde yürütülmez!
Projenizde System.Transaction ismspace kullanma sayfasına başvurun. Bir TransactionScope'u tanımlamak, bir kapsamı tanımlamaya eşdeğerdir; yani bu işlemin kapsamı kullanım içindedir. Kullanım kapsamında, eğer bir kapsam yoksa. Complete() komutunu uygularsanız, dürbün yok edildiğinde otomatik olarak tüm işlemleri geri alır. )

Bu ihtiyaclarımızı karşılamayabilir. Bağlam1 ve bağlam2'nin aynı anda başarılı şekilde çalıştırılması gerekiyorsa ya da hiçbiri başarılı olmazsa, kodda küçük ayarlamalar yapmamız gerekir, örneğin aşağıdaki kodu kullanmamız gerekir:



SaveChanges(false) kullanarak gerekli veritabanı işlem komutlarını önce veritabanına gönderiyoruz; bu da bağlam1 ve bağlam2'nin aslında değişmediğini, işlem sonlandırılıp otomatik olarak geri alındığında, hiçbir değişiklik veritabanına bağlanmaz, böylece başarıyla geri alınabilir.




Önceki:EF6, işlemleri yönetmek için Database.BeginTransaction kullanır
Önümüzdeki:EF ORM Geliştirme ve Seri Kullanımı Eğitimleri
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com