|
|
Yayınlandı 22.08.2020 10:21:31
|
|
|

EF kullanılarak veritabanını manipüle eder, aynı HTTP isteğinde DbContext (veritabanı işlem bağlam sınıfı) çıkarılır ve benzersizliği sağlar, makalede Entity Framework bağlamının benzersizliğini sağlamak için iki şema kullanılır ve .NET Core platformundaki çözüm eklenir.
Seçenek 1
Bir nesnenin küresel benzersiz olacağı garanti ediliyorsa, kesinlikle klasik bir tasarım deseni düşüneceksiniz: tek bir mod, eğer kullanılacak nesne konuda benzersiz olmalıysa?
Veri yuvası: CallContext, tamam msdn'in callcontent açıklamasına bak.
CallContext, metod çağrıları için iş parçacığı yerel deposuna benzer özel bir koleksiyon nesnesidir ve her mantıksal yürütme iş parçacığına benzersiz bir veri yuvası sağlar. Veri slotları, diğer mantıksal iş parçacıklarındaki çağrı bağlamları arasında paylaşılmaz. Çağrı Bağlamı, yürütme kodunun yolu boyunca ileri geri yayıldığında ve o yoldaki bireysel nesneler tarafından incelendiğinde nesnelere eklenebilir.
Yani, mevcut iş parçacığı nesneyi iş parçacığının yerel depolamasına saklar ve iş parçacığı yok edildikçe nesne de yok edilir.
Kod kullanın:
Kullanım senaryoları: Kişisel olarak, nesnenin iş parçacığında küresel olarak kullanılması gerektiğinde ve diğer thread paket uzantısı iş parçacıklarının erişemediği durumlarda kullanıldığını düşünüyorum. Örneğin, EF'nin veri bağlamında her istek için bir iş parçacığı oluşturulur ve bu sırada, farklı fonksiyonların kullanabileceği bir veri bağlamı nesnesi oluşturulur ve işlem sorunlarını önlemek için birlikte commit edilir. Elbette, bazı insanlar bana kullanmak için bir değişken oluşturabilir miyim diye sorabilir, ki bu da aynı amacı gerçekleştirebilir, ama bu nesne diğer iş parçacığı verileriyle de etkileşime girebilir, bu da iş parçacığında benzersiz olma kavramına aykırı.
Seçenek 2
Senaryo, web http taleplerine dayanır, çünkü her istek yeni bir iş parçacığıdır ve kod şu şekildedir:
.NET Core'da "CallContext" kullanımı
CallContext'in artık mevcut olmadığını biliyoruz. NETStandard veya .NET Core.
Ama<T> Asynclocal'ı kullanarak bir CallContext taklit edebilirsiniz, sadece aşağıdaki statik sınıfı oluşturun:
Referans alınması gereken isim uzayları:
Ayrıca kullanımı da kolay (burada CallContext'i Ortak kitaphaneye koydum):
|
Önceki:ASP.NET MVC5, önceden derlenmiş modda yayımlanarak sayfa yükleme hızını ve performansını iyileştirirÖnümüzdeki:[Dön]. NET, PPT'yi resim olarak ihraç ediyor
|