Um vollständig LinqToSql in einer ASP.net 3.5-Anwendung zu verwenden, ist es notwendig, erstellen DataContextclasses (die in der Regel mit dem Designer in VS 2008 erfolgt). Aus Sicht der Benutzeroberfläche ist der DataContext ein Entwurf der Abschnitte Ihrer Datenbank, die Sie über LinqToSql verfügbar machen möchten, und ist ein wesentlicher Bestandteil beim Einrichten der ORM-Funktionen von LinqToSql.Sind mehrere DataContext-Klassen jemals geeignet?
Meine Frage ist: Ich gründe ein Projekt, das auch eine große Datenbank verwendet, in der alle Tabellen in irgendeiner Weise durch Fremdschlüssel miteinander verbunden sind. Meine erste Neigung besteht darin, eine riesige DataContext-Klasse zu erstellen, die die gesamte Datenbank modelliert. So kann ich in der Theorie könnte (obwohl ich weiß nicht, ob dies in der Praxis benötigt wird) verwenden, um die Fremdschlüssel-Verbindungen, die durch LinqToSql erzeugt werden, leicht zwischen verwandten Objekten in meinem Code gehen, verwandte Objekte einfügen usw.
Nachdem ich jedoch darüber nachgedacht habe, denke ich jetzt, dass es sinnvoller sein könnte, mehrere DataContext-Klassen zu erstellen, die sich jeweils auf einen bestimmten Namespace oder einen logisch zusammenhängenden Abschnitt innerhalb meiner Datenbank beziehen. Mein Hauptanliegen ist, dass das Instanziieren und Entsorgen einer großen DataContext-Klasse für einzelne Operationen, die sich auf bestimmte Bereiche der Datenbank beziehen, eine unnötige Aussetzung für Anwendungsressourcen darstellen würde. Darüber hinaus ist es einfacher, kleinere DataContext-Dateien als eine große Datei zu erstellen und zu verwalten. Die Sache, die ich verlieren würde, ist, dass es einige entfernte Abschnitte der Datenbank geben würde, die nicht durch LinqToSql navigierbar wären (obwohl eine Kette von Beziehungen sie in der tatsächlichen Datenbank verbindet). Außerdem würden einige Tabellenklassen in mehr als einem DataContext vorhanden sein.
Irgendwelche Gedanken oder Erfahrungen darüber, ob mehrere DataContexte (entsprechend DB-Namespaces) anstatt (oder zusätzlich zu) einer sehr großen DataContext-Klasse (entsprechend der gesamten DB) geeignet sind?
Ja, das OP ist nicht korrekt, wenn man annimmt, dass ein großer DC mehr Zeit benötigt, um instanziiert zu werden. Nachdem die erste Instanz in einem laufenden Prozess erstellt wurde, können nachfolgende Instanzen desselben Domänencontrollers fast sofort erstellt werden. –