.net – LinqToSql声明和实例化DataContext最佳实践?
发布时间:2020-12-12 16:10:26 所属栏目:MsSql教程 来源:网络整理
导读:在我的扩展LinqToSql类中设置DataContext以便于访问的最佳做法是什么? 例如,我在我的dbml中有一个“用户”实体,我想像这样添加该类的方法: Partial Public Class User Public Function GetUser(ByVal UserID as Integer) as User 'Do Work End FunctionEnd
在我的扩展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 这将允许我访问每个方法的数据文本,而不必每次新声明它.但是当然你不能这样做,因为dbml已经有一个构造函数.如果任何事情发生变化,那么在dbml中添加代码总是被覆盖. 任何人有什么好的想法,如何在这里保存自己一些多余的代码? TIA! 解决方法首先,确保在完成之后处理DataContext!他可以是一个沉重的小混蛋(编辑不重,可以实例化,但是如果你不用处理就继续使用它,很重要)你不想让旧的DataContexts挂在内存中.第二,DataContext旨在表示单个逻辑事务.例如.您应该每次要开始一个新的事务时创建一个新的事务,并在该事务完成时将其删除.所以为了你的目的,这可能是GetUser方法的范围.如果您有一系列需要作为组的数据库调用,那么在摆脱它们之前,它们都应该使用相同的DC. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |