|
|
YayınlandıDün saat 20:48'de
|
|
|

Gereksinimler: Bazı veriler, makale içeriği, sayfa görüntülemeleri, yorumlar gibi kirli okumalara izin verir; bunlar finansal veriler kadar titiz değildir. Sorgu performansını artırmak için ReadUncommitted işlemleri kullanılabilir, ancak SqlTransaction ve TransactionScope'un henüz düzeltilmemiş sızıntı izolasyon seviyesindeki hataları vardır, bu nedenle WITH (NOLOCK) çözümünü kullanmayı düşünün.
Eleştiri:
SqlTransaction ve TransactionScope sızıntı izolasyon seviyeleri (bu hata 8 yıldır var ve hâlâ çözülmedi!) Tahminimce birçok kişi etkilenebilir ama farkında olmayabilir):Bağlantı girişi görünür.
Bu makale, SQL ifadelerini ayrıştırmak ve WITH(NOLOCK) eklemek için SqlScriptDOM'a referans vermelidir. Açık kaynak projeyine bakınız:Bağlantı girişi görünür.
Nuget şöyle alıntı yapıyor:
Yeni bir AllowDirtyReadAttribute.cs özelliği oluşturun, aşağıdaki şekilde kodlayın:
DbCommandInterceptor'da belirli yöntemleri geçersiz kılmak için yeni bir WithNoLockInterceptor oluşturun. Kod şöyledir:
EF Core'a aşağıdaki yapılandırmayla enjekte edin:
Kontrol yönteminin üstüne eklemek için kullanılır[Kirli Okumaya İzin Ver]Kutu.
Ham SQL ifadesi:
[o] SEÇİN. [id], [o]. [CustomerName], [o0]. [id], [o0]. [OrderId], [o0]. [Ürün] FROM [Emirler] AS [o] SOL DIŞ BIRLEŞIM [OrderLines] AS [o0] ON [o]. [Id] = [o0]. [OrderId] NEREDE [o]. [Id] = 1 [o] tarafından emredildi. [Id]; NOLOCK eklendikten sonra oluşturulan ifade:
[o] SEÇİN. [id], [o]. [CustomerName], [o0]. [id], [o0]. [OrderId], [o0]. [Ürün] FROM [Emirler] As [o] WITH (NOLOCK) SOL DIŞ BIRLEŞIM [OrderLines] AS [o0] WITH (NOLOCK) ON [o]. [Id] = [o0]. [OrderId] NEREDE [o]. [Id] = 1 [o] tarafından emredildi. [Id]; |
Önceki:(MSSQL) SQL Server Tam Metin Arama, Tam Metin İndeksini
|