2009-03-27 12 views
1

Ich bekomme Berichte, dass Verbindungspooling funktioniert nicht in der Subsonic-Orm bei Verwendung mit SQL Server auf einem Remote-Computer. Ich bin mir nicht sicher, wie sie das überwachen, vielleicht mit dem Profiler.Funktioniert das Verbindungs-Pooling korrekt in Subsonic?

Subsonic öffnet spät, schließt früh wie Sie in einer Orm-Ebene tun sollten, aber gibt es ein Problem mit der Implementierung, die zu viele Verbindungen verursachen würde?

Antwort

7

Es gibt eine Möglichkeit, dass eine Verbindung offen bleibt, wenn SubSonic verwendet wird. Viele Leute gehen davon aus, dass der Leser beim Laden einer Sammlung für Sie geschlossen wird - aber das ist nicht der Fall (eine Klasse sollte niemals ohne Erlaubnis auf einer anderen Klasse agieren). Aus diesem Grund gibt es eine Methode namens "LoadAndCloseReader()".

Wenn Sie mehr herausfinden könnten, wäre das großartig.

1

Bedeutet dies, dass SubSonic-Verbindungen standardmäßig persistent sind?

0

Das habe ich erst kürzlich entdeckt, nachdem ich ähnliche Probleme hatte.

Als Rob sagte, es nicht so verwendet werden soll:

wie
MyTableCollection objCol = new MyTableCollection().Load(); 

es verwendet werden soll:

MyTableCollection objCol = new MyTableCollection(); 
objCol.LoadAndCloseReader(MyTable.FetchAll()); 
+0

Vielleicht dies: MyTableCollection objCol = new MyTableCollection(); objCol.LoadAndCloseReader (MyTable.FetchAll()); Ich mache das nirgendwo. Ich habe ungefähr 40 Zeilen zu ändern. Es gibt keine Dokumentation für LoadAndCloseReader. Schau dir http://subsonicproject.com/docs/Main_Page an, es wird nicht gefunden. Ich habe seit Monaten nicht mit Unterschall gearbeitet. –

1

Ich bin mir nicht sicher über die früheren Versionen, aber in 2.1, AbstractList .Load() verwendet bereits LoadAndCloseReader (rdr) in einer using-Anweisung.

Verwandte Themen