微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.net – 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

这将允许我访问每个方法的数据文本,而不必每次新声明它.但是当然你不能这样做,因为dbml已经有一个构造函数.如果任何事情发生变化,那么在dbml中添加代码总是被覆盖.

任何人有什么好的想法,如何在这里保存自己一些多余的代码

TIA!

解决方法

首先,确保在完成之后处理DataContext!他可以是一个沉重的小混蛋(编辑不重,可以实例化,但是如果你不用处理就继续使用它,很重要)你不想让旧的DataContexts挂在内存中.

第二,DataContext旨在表示单个逻辑事务.例如.您应该每次要开始一个新的事务时创建一个新的事务,并在该事务完成时将其删除.所以为了你的目的,这可能是GetUser方法的范围.如果您有一系列需要作为组的数据库调用,那么在摆脱它们之前,它们都应该使用相同的DC.

原文地址:https://www.jb51.cc/mssql/82545.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐