Ich setzte mich gerade etwas mit Ef-Core 2.1 auseinander. Hatte vorher mit VBA und ADO und dem typisierten Dataset unter WinForms gearbeitet.
Eine Verbindung zur Datenbank soll nur kurz geöffnet und dann wieder geschlossen werden. Daher setzte ich jetzt (WPF und EF-Core 2.1) immer innerhalb einer Methode
using (var context = DataContext())
{
}
ein. So, wie ich es immer in Beispielen gesehen habe.
Nun lese ich immer über DataTracking und dass ich mit context dann die Daten überprüfen kann etc. Außerdem habe ich jetzt auch gelesen, das bspw. erst mit ToList() etc, eine Verbindung aufgebaut und dann wieder geschlossen wird.
Ist also quasi möglich DataContext bei Programmstart zu erzeugen und bei Programmende zu schließen ohne permanent eine Datenbankverbindung geöffnet zu haben, oder doch stets nur dann, wenn ich es benötige und dann wieder zu disposen?
So, wie ich es immer in Beispielen gesehen habe.
Dann hast Du Dir nur sehr sehr sehr sehr sehr sehr einfache Beispiele angeschaut.
Die Microsoft Beispiele zeigen Datenbank-Kontexte korrekt via Dependency Injection erzeugt wird - in der offiziellen Dokumentation.
Ein Context erzeugt man dann, wenn man ihn braucht.
Und je nach Anwendung oder Situation kann das unterschiedlich passieren. Es gibt nicht den einen Weg.
erst mit ToList() etc, eine Verbindung aufgebaut und dann wieder geschlossen wird.
Wo hast Du das gelesen? 🤔 Das ist falsch.
Quelle?
ToList ist ein Mittel der Materialisierung.
Hat aber mit der Verbindung nichts am Hut.
Tipp: wenn Du neu bist; dann lies einfach mal die Doku der Kapitel komplett durch 👍
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Möglich das ich da was verwechselt habe in meinem Kopf...
Gut, also wie gehabt im using-Block, wenn benötigt...
Gut, also wie gehabt im using-Block, wenn benötigt...
Prinzipiell keine gute Idee für wirklich produktiven Code; da würde man dies eben mit genannter Dependency Injection machen (siehe mein Link der auf die Doku verweist).
Aber um überhaupt mal rein zu kommen eine Möglichkeit mit Luft nach Oben.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code