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

Görünüm: 27|Yanıt: 0

[İpucu] Yüksek eşdeğerli EF Core sorguları için (NOLOCK) optimizasyonu

[Bağlantıyı kopyala]
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:
Entity Framework Sorgu Optimizasyonu WITH(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

.NET/C#, SQL ifadelerini ayrıştırmak ve çalıştırmak için SqlScriptDOM kullanır
https://www.itsvse.com/thread-11222-1-1.html

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
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