Laden...

Wann und wie sollte man am besten einene DataBase-Context erzeugen?

Erstellt von sronny vor 5 Jahren Letzter Beitrag vor 5 Jahren 989 Views
S
sronny Themenstarter:in
6 Beiträge seit 2019
vor 5 Jahren
Wann und wie sollte man am besten einene DataBase-Context erzeugen?

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?

16.842 Beiträge seit 2008
vor 5 Jahren

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 👍

S
sronny Themenstarter:in
6 Beiträge seit 2019
vor 5 Jahren

Möglich das ich da was verwechselt habe in meinem Kopf...

Gut, also wie gehabt im using-Block, wenn benötigt...

16.842 Beiträge seit 2008
vor 5 Jahren

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.