Wie Verwenden von WITH (NOLOCK) in LINQ to SQL?

Wir können SQL einfach so verwenden:

SELECT * FROM student WITH(NOLOCK); 

Wie kann ich dies mit LINQ to SQL ohne die Verwendung eines TransactionScope ?

LINQ to SQL hat hierfür keinen Mechanismus, Sie können jedoch eine Transaktion mit einer bestimmten Isolationsstufe erstellen. Sehen Sie sich den folgenden Code an:

 using (var con = new SqlConnection("constr")) { con.Open(); using (var transaction = con.BeginTransaction( IsolationLevel.ReadUncommitted)) { using (var context = new SchoolDataContext(con)) { // HACK: Setting the context.Transaction is // needed in .NET 3.5 (fixed in .NET 4.0). context.Transaction = transaction; var q = from s in context.Students select c; } } } 

Manchmal ist die Verwendung dieser Art der Isolierung nützlich, z. B. aus performancesgründen. Stellen Sie jedoch sicher, dass Sie keine CUD-Operationen (CUD) erstellen, aktualisieren oder löschen, die diese Art der databaseisolierung verwenden. Es hängt natürlich von Ihren Situationen ab, aber Ihre data könnten in einen inkonsistenten Zustand geraten.