Frage

Was ist das beste Lifetime-Modell für einen DataContext?Sollte ich einfach immer dann eine neue erstellen, wenn ich sie benötige (auch bekannt als Funktionsebene), sollte ich in jeder Klasse, die sie verwenden würde, eine verfügbar halten (Klassenebene), oder sollte ich eine statische Klasse mit einem statischen DataContext (App-Domäne) erstellen? Ebene)?Gibt es hierfür bewährte Best Practices?

War es hilfreich?

Lösung

Sie müssen im Wesentlichen den gleichen Datenkontext während der gesamten Lebensdauer der Vorgänge, die Sie ausführen möchten, verfügbar halten, wenn Sie jemals Änderungen speichern möchten, die vorgenommen werden sollen .SubmitChanges()Dies sollte später erfolgen, da die Änderungen sonst verloren gehen.

Wenn Sie nur Dinge abfragen, ist es in Ordnung, sie nach Bedarf zu erstellen, aber wenn Sie dies später möchten, können Sie dies auch tun .SubmitChanges() Sie müssen Ihren Code häufig umgestalten, also können Sie genauso gut das Muster übernehmen, das effektiv beizubehalten datacontext Von Anfang an global in Ihrer App.

Beachten Sie, dass der Datenkontext lautet getrennt.Die Verbindung wird erst hergestellt, wenn die Abfragedaten vorhanden sind aufgezählt (nicht, wenn Sie die Abfrage zum ersten Mal ausführen, da es sich um einen „faulen“ Datentyp handelt, der Daten nur dann bereitstellt, wenn sie benötigt werden) und dann sofort danach geschlossen wird.An .SubmitChanges() Zur Übermittlung der Änderungen wird die Verbindung geöffnet und unmittelbar danach wieder geschlossen.Denken Sie also nicht daran, das zu behalten datacontext herum hält eine Verbindung offen, nicht (Sie können das einhaken StateChange im Falle der Verbindung, um dies selbst zu bestätigen, so bin ich mir sicher).

Es gibt einen tollen Artikel unter Rick Strahls Blog die dieses Thema ausführlicher behandelt, weitaus mehr als meine Antwort hier bietet!!

Andere Tipps

Ich denke, Jeff Atwood hat darüber gesprochen Herding Code-Podcast, als er zu genau demselben Thema befragt wurde.Hören Sie es sich etwa in den letzten 15 bis 20 Minuten an.

Ich denke, in SO wird der Datenkontext in der Controller-Klasse erstellt.Ich bin mir hier über viele Details nicht sicher.Aber so sah es aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top