Ich brauche eine Transaktion wie unten auszuführen:EF6 Lesen unbestätigten Daten
- Transaktion Start: Hier nenne ich
context.Database.BeginTransaction()
(bitte beachten Sie diecontext
hier ist nicht das gleiche unten in der Frage, wo ich nicht gebundenen lesen wollen) - Speichern Sie einen Kontakt (mit einer gespeicherten Prozedur): Dieser USP hat auch eine Transaktion.
- einige andere Datensätze erstellen auf dem Kontakt Basis (done Seite mit EF-Anwendung)
- Commit
Das Problem, das ich in laufen lasse, ist, dass in Schritt 3, ich brauche einige Daten aus der Datenbank zu lesen, wurde noch nicht festgelegt (ab Schritt 2). Ich habe versucht, dies zu tun, aber es funktioniert nicht:
context.Database.ExecuteSqlCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;");
var contact = context.Contact.SingleOrDefault(x => x.ContactId == intId);
context.Database.ExecuteSqlCommand("SET TRANSACTION ISOLATION LEVEL READ COMMITTED;");
ich den Debugger laufen habe und Pause an dem Punkt, wo die contact
geholt wird, aber nichts zurückgegeben.
Wenn ich für denselben Datensatz abfragen in SSMS (SQL Server mgmt Studio), gibt es Ergebnis:
set transaction isolation level read uncommitted
select * from Contact c where c.ContactId = 9999
Fragen
- Wie kann ich nicht festgeschriebenen Daten mit EF6 lesen? Einige Online-Suchen führen mich dazu, einen benutzerdefinierten Interceptor zu erstellen, aber muss ich das wirklich?
- Viele Artikel schlagen vor, nicht festgeschriebene Daten zu lesen, aber ich denke nicht an einen anderen Weg, dies zu erreichen. Ist da?
Was eigentlich ist der Schritt 1? Wenn Sie 'var tr = context.Database.BeginTransaction();' ausführen, sollten die zukünftigen Operationen, die denselben 'Kontext' verwenden, die nicht festgeschriebenen Änderungen in dieser Transaktion sehen. –
@IvanStoev es ist einfach 'this.context.Database.BeginTransaction();' aber das ist nicht der gleiche Kontext wie der in der Frage. – CodingYoshi
Ich sehe. Dann versuchen Sie 'BeginTransaction (System.Data.IsolationLevel.ReadUncommitted)', es scheint zu funktionieren (Schnelltest). –