2009-03-30 4 views
1

Dies ist nicht SQL Connection Pooling and Audit Login/Logout.C# Linq sieht Audit Logout nach jedem Lesen

Ich habe eine C# .NET 3.5 App, die über 30K Datensätze auf SQL 2008 in einer lokalen Datenbank aktualisiert.

Die Logik ist es zuerst überprüft, ob der Datensatz existiert SingleOrDefault (p => p.stock = Lager & & p.number = Nummer) und fügt entweder den Datensatz oder Updates.

Ich konzentriere mich nur auf die Lesevorgänge mit SingleOrDefault.

Ich erstellte die Datenkontextdatei mit SQLMetal.exe.

Nach jedem las ich in SQL Profiler sehen:
Audit Logout (1300 mal gelesen)
RPC: Completed sp_reset_connection
Audit Login
RPC: Completed Sp_executesql 'usw. wählen ...'

I erstellt ein neues Projekt auf einer anderen Maschine mit 2005 und einer anderen Datenbank, aber unterschiedliche Ergebnisse.
Audit Login
RPC: Completed Sp_execute SQL ...
RPC: Completed Sp_execute SQL ...
RPC: Completed Sp_execute sql ...
...

Irgendwelche Ideen?

Antwort

1

Alles in einem TransactionState-Objekt zu wickeln löste dieses Problem für mich. Beispiel:

using (TransactionScope ts = new TransactionScope()) 
{ 
    // do db stuff here 

    ts.Complete(); 
} 

Beachten Sie, dass ich dies tat, obwohl ich nur Datenbanklesevorgänge ausführte.

Beachten Sie auch, dass Sie Ihrem Projekt einen Verweis auf System.Transactions hinzufügen müssen, wenn es nicht bereits vorhanden ist.