gpt4 book ai didi

.net - LinqToSql 声明和实例化 DataContext 最佳实践?

转载 作者:行者123 更新时间:2023-12-03 20:12:54 25 4
gpt4 key购买 nike

设置 DataContext 以便在扩展的 LinqToSql 类中轻松访问的最佳实践是什么?

例如,我的 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 总是会被覆盖。

任何人都对如何在这里节省一些多余的代码有什么好主意吗?

蒂亚!

最佳答案

首先,确保在完成后处理 DataContext!他可能是个笨重的小 SCSS ( 编辑 实例化不是很重,但是如果你继续使用它而不处理的话,它很重);您不希望旧的 DataContexts 在内存中闲逛。

二、 DataContext 旨在表示单个逻辑事务 .例如。每次要开始新事务时都应该创建一个新事务,并在该事务完成时将其删除。因此,对于您的目的,这可能是 GetUser 的范围方法。如果您有一系列需要作为一个组进行的 DB 调用,则在摆脱它之前,它们都应该使用相同的 DC。

关于.net - LinqToSql 声明和实例化 DataContext 最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/549393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com