设置 DataContext 以便在扩展 LinqToSql 类中轻松访问方面的最佳实践是什么?
例如,我的 dbml 中有一个“User”实体,我想向该类添加方法,如下所示:
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
这将允许我访问每个方法的数据上下文,而不必每次都重新声明它。但当然你不能这样做,因为 dbml 已经有一个构造函数。如果任何内容发生变化,将代码添加到 dbml 中总是会被覆盖。
有人对如何在这里节省一些多余的代码有什么好主意吗?
TIA!
首先,确保完成后处理 DataContext!他可以是一个沉重的小混蛋(edit实例化并不繁重,但如果您继续使用它而不进行处置,则保留起来很繁重);您不希望旧的 DataContext 挂在内存中。
Second, DataContext 旨在表示单个逻辑事务。例如。每次你想开始一项新交易时,你都应该创建一个新交易,并在什么时候删除它that交易完成。所以对于你的目的来说,那就是probably的范围GetUser
方法。如果您有一系列需要作为一个组进行的数据库调用,那么它们应该在摆脱它之前都使用相同的 DC。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)