我的问题:调用存储过程会在30秒后超时。似乎自动生成的表适配器不提供更改它的接口。
问题:如何更改SP呼叫的超时值?
环境:Visual Studio 2012,VB.NET中的代码,数据库:SQL Server 2008 R2。我正在使用DataSet Designer的数据集进行CRUD操作,并调用Store Procedures。从代码中调用自动生成的表适配器。
已完成研究:我找到了一些C#项目的答案,但我对该语言的经验不多:post 1
答案 0 :(得分:0)
由于您使用的是强类型TableAdapter
,只保留DataAdapter
protected
属性,因此您无法更改所有SqlCommand
' s {直接{3}}你可以做的是扩展这个自动生成的类(它是Partial Class
)。因此,在同一目录中创建另一个具有相同名称的类,例如:Public Partial Class YourTableAdapter
。
现在,您可以创建可以访问DataDapter
的新属性或方法。请注意,该类必须位于相同(自动生成)的命名空间中。例如:
Namespace ApplicationName.DataSetNameTableAdapters
Partial Public Class YourTableAdapter
Public Property CommandTimeout As Int32
Get
Return Me.CommandCollection(0).CommandTimeout
End Get
Set(value As Int32)
For Each cmd As SqlCommand In Me.CommandCollection
cmd.CommandTimeout = value
Next
End Set
End Property
End Class
End NameSpace
不要扩展原始类(.designer.vb
),它将在设计师的每次更改时被覆盖。
现在你可以做到:
Dim adapter = new YourTableAdapter()
adapter.CommandTimeout = 60 * 30 ' 30 minutes