2012-03-28 6 views
3

Wie der Titel sagt, muss ich einen Weg finden, um mit (Nolock) in jedem SELECT ich in NHibernate zu tun. Egal ob es mit hql, Linq Queries oder Kriterien aufgerufen wird, solange SELECT ausgeführt wird, kommt mit (nolock)!WITH (nolock) in jedem SELECT - NHibernate

Danke!

+0

ich nur neugierig bin, warum Sie dies tun für alle wollen würde Fragen? Ich kann bestimmte Funktionen sehen, die nicht die neuesten Daten benötigen - aber alle Funktionen? Dies ist ein sehr gefährliches Design, das zu fehlerhaften Daten in Ihrer Datenbank führen kann. Ich wäre sehr vorsichtig, dies in jedem Produktionscode zu verwenden. – tsells

+0

Ja, das ist extrem gefährlich. Einige schlecht entworfene Legacy-Systeme haben jedoch so viele langlaufende trans, dass sie WITH (NOLOCK) überall verwenden. Wenn etwas wegen dieser niedrigen Isolationsstufe schief geht, beschuldigen Sie uns nicht !! Wir haben dich gewarnt. – JotaBe

Antwort

11

Set yout Datenbank Transaktionsisolationsstufe zu SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

NOLOCK ist equivalenteto READUNCOMMITED, so erhalten Sie den gleichen Effekt, wenn Ihre Verbindung, dass die Transaktionsisolationsstufe verwendet.

WARNUNG! ACHTUNG! LESEN SIE DIES!!!

Dies ist die beste Erklärung, die ich jemals auf NOLOCK HINT gefunden habe (und TIPS im Allgemeinen). Es ist lesenswert:

SQL Server NOLOCK Hint & other poor ideas

ADDED LITERATUR:

SET TRANSACTION ISOLATION LEVEL

Adjusting Transaction Isolation Levels

Isolation Levels (OLE DB)

+0

Ich sah in einem anderen Beitrag, dass es nicht meine Auswahl mit (nolock) 'd. Bist du dir da sicher ? – Leonardo

+0

@LeonardoFerrari, das eine nicht festgeschriebene Isolationsstufe ausführt, ist die GLEICHE, wenn Ihre Abfrage nicht gesperrt wird. – Phill

+0

OK. Danke Leute ! – Leonardo

Verwandte Themen