Was ist die beste Vorgehensweise beim Einrichten meines DataContext für den einfachen Zugriff in meinen erweiterten LinqToSql-Klassen?LinqToSql deklarieren und instanziieren DataContext Best Practice?
Zum Beispiel, ich habe eine „User“ Einheit in meiner dbml und ich mag wie so diese Klasse Methoden hinzufügen:
Partial Public Class User
Public Function GetUser(ByVal UserID as Integer) as User
'Do Work
End Function
End Class
Um meine Datacontext zugreifen Ich würde es im Innern erklären die Methode wie folgt:
Partial Public Class User
Public Function GetUser(ByVal UserID as Integer) as User
Dim dc as New MyDataContext()
Return (From u in dc.Users Where u.ID = UserID).Single()
End Function
End Class
Ich möchte das nicht für jede einzelne Methode tun müssen. Normalerweise (wenn ich nicht die LinqToSql dbml Klassen erstreckten, wurden) konnte ich dies nur tun:
Partial Public Class User
Private dc as MyDataContext
Public Sub New()
dc = new MyDataContext()
End Sub
Public Function GetUser(ByVal UserID as Integer) as User
Return (From u in dc.Users Where u.ID = UserID).Single()
End Function
Public Function GetAllUsers() as IEnumerable(Of User)
Return From u in dc.Users
End Function
'etc...
End Class
Dies würde erlauben Sie mir für jede Methode der Datacontext zugreifen, ohne sie jedes Mal neu anmelden zu müssen. Das können Sie natürlich nicht machen, da die dbml bereits einen Konstruktor hat. Und das Hinzufügen von Code in die dbml wird immer überschrieben, wenn sich jemals etwas ändert.
Hat jemand gute Ideen, wie Sie mir hier überschüssigen Code sparen können?
TIA!
Der Datenkontext selbst ist eigentlich ziemlich leicht, obwohl er möglicherweise viele Entitäten referenzieren könnte. Es ist eine wirklich gute Idee, sie zu entsorgen, um die Entitäten zu befreien. Wenn es ein schwergewichtiges Objekt wäre, würde ich eher geneigt sein, es herumzuhalten, so dass ich es nicht neu erstellen musste. – tvanfosson
@tvanfosson das ist was ich meinte; bearbeitet, um diesen Punkt klarer zu machen. Der DC kann möglicherweise viel Gewicht mit sich tragen; Am besten, um es so schnell wie möglich loszuwerden. –
Argumente gegen die Entsorgung: http://stephenwalther.com/blog/archive/2008/08/20/asp-net-mvc-tip-34-dispose-of-your-datacontext-or-don-t.aspx –