在我的擴展LinqToSql類中設置DataContext以便於訪問的最佳實踐是什麼?LinqToSql聲明並實例化DataContext最佳實踐?
例如,我有我的dbml「用戶」實體和我想的方法添加到類像這樣:
Partial Public Class User
Public Function GetUser(ByVal UserID as Integer) as User
'Do Work
End Function
End Class
爲了訪問我的DataContext我不得不內聲明它方法是這樣的:
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
我想不必爲每一種方法都這樣做。通常情況下(如果我不延長LinqToSql的dbml類)我可能只是這樣做:
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
這將使我訪問每個方法在DataContext,而無需每次都重新申報。但是當然你不能這麼做,因爲dbml已經有了一個構造函數。如果有任何改變,向dbml中添加代碼總會被覆蓋。
任何人有任何關於如何在這裏保存一些多餘的代碼的好主意?
TIA!
數據上下文本身實際上非常輕量級,儘管它可能引用了很多實體。處理它以釋放實體是一個非常好的主意。如果它是一個重量級的對象,我會更傾向於保持它,所以我不必重新創建它。 – tvanfosson 2009-02-14 17:33:37
@tvanfosson這就是我的意思;編輯,以使這一點更加清晰。 DC可能會帶來很多重量;儘可能快地擺脫它。 – 2009-02-14 17:52:54