|
|
Veröffentlicht amGestern um 20:48 Uhr
|
|
|

Anforderungen: Einige Daten erlauben schmutziges Lesen, wie Artikelinhalte, Seitenaufrufe, Kommentare usw., was nicht so streng ist wie Finanzdaten. Um die Abfrageleistung zu verbessern, können ReadUncommitted-Transaktionen verwendet werden, aber SqlTransaction und TransactionScope haben Leak-Isolation-Fehler, die noch nicht behoben wurden, daher sollten Sie die WITH (NOLOCK)-Lösung in Betracht ziehen.
Rezension:
SqlTransaction- und TransactionScope-Leckisolierungsstufen (dieser Fehler existiert seit 8 Jahren und wurde immer noch nicht behoben!) Ich schätze, viele Menschen könnten betroffen sein, es aber vielleicht nicht merken):Der Hyperlink-Login ist sichtbar.
Dieser Artikel muss auf das SqlScriptDOM verweisen, um SQL-Anweisungen zu parsen und WITH(NOLOCK) hinzuzufügen. Siehe das Open-Source-Projekt:Der Hyperlink-Login ist sichtbar.
Nuget Angebote wie folgt:
Erstelle eine neue AllowDirtyReadAttribute.cs Funktion, Code wie folgt:
Erstellen Sie einen neuen WithNoLockInterceptor, um bestimmte Methoden in DbCommandInterceptor zu überschreiben. Der Code lautet wie folgt:
Injizieren Sie in EF Core mit folgender Konfiguration:
Nutze es, um es über der Controller-Methode hinzuzufügen[AllowDirtyRead]Dose.
Rohe SQL-Anweisung:
SELECT [o]. [Id], [o]. [CustomerName], [o0]. [Id], [o0]. [OrderId], [o0]. [Produkt] VON [Befehlen] AS [o] LINKE ÄUSSERE VERBINDUNG [OrderLines] AS [o0] AUF [o]. [Id] = [o0]. [OrderId] WO [o]. [Id] = 1 ORDNUNG NACH [o]. [Id]; Anweisung, die nach Hinzufügen von NOLOCK generiert wird:
SELECT [o]. [Id], [o]. [CustomerName], [o0]. [Id], [o0]. [OrderId], [o0]. [Produkt] VON [Befehlen] WIE [o] MIT (NOLOCK) LINKE ÄUSSERE VERBINDUNG [OrderLines] ALS [O0] MIT (NOLOCK) AUF [o]. [Id] = [o0]. [OrderId] WO [o]. [Id] = 1 ORDNUNG NACH [o]. [Id]; |
Vorhergehend:(MSSQL) SQL Server Volltextsuche, Volltextindex
|