Ich habe hier einen interessanten Link über Linq-To-Sql gesehen: Effizienterer Datenbankzugriff
Wenn ich mir meinen eigenen Code ansehe, stelle ich fest, dass ich auch nicht die DataClassesDataContext
. Ist das ein Problem? Ich weiß es nicht, aber ich habe meinen Code durchsucht und Folgendes hinzugefügt using (DataClassesDataContext db = new DataClassesDataContext())
in meinem gesamten Code.
Und jetzt kommt das Interessante. Wir protokollieren fast jeden Seitenzugriff und jede Transaktion in unserem Code. Ich habe jetzt also einen Codeblock, der so aussieht:
protected WriteLog(String activity)
{
using (DataClassesDataContext db = new DataClassesDataContext())
{
... Do db write with Linq
}
}
Diese Funktion wird mit mindestens 50 Aufrufen pro Sekunde sehr stark genutzt. Ich gehe also davon aus, dass wir früher unter potenziellen "Lecks" gelitten haben, was ein Problem darstellt. Aber jetzt sieht es so aus, als würden wir keine DB-Ressourcen vergeuden, sondern stattdessen viel Zeit mit dem Öffnen und Schließen von Datenbankverbindungen verbringen. Das kann doch nicht richtig sein, oder? Öffnet und schließt der obige Code jetzt eine DB-Verbindung? für jeden einzelnen Protokolleintrag unserer Nutzer und damit noch mehr Overhead verursachen, als den DataClassesDataContext zu einem späteren Zeitpunkt in die Müllabfuhr zu geben?