【发布时间】:2011-01-18 22:10:24
【问题描述】:
在 VB.NET 中,我正在为 SqlParameterCollection 类创建扩展方法,以便可以在一行代码中添加“详细”参数。我知道 .AddWithValue 方法将导致 SQL Server 每次通过带有未指定字母数字数据类型(即 VarChar 或 NVarChar)大小的 SqlParameter 对象的 SqlCommand 调用存储过程时重新评估 SQL Server 执行计划。换句话说,.AddWithValue 是一个坏主意,除了像 INT 数据类型这样的数据类型的大小是常数的类型。
我以前从未使用过扩展方法,那么这段代码似乎可以实现我想要的吗?代码“有效”,但我正在寻找另一双眼睛,以确保我不会以会强制重新评估 SQL Server 执行计划的参数结束。
编辑:我必须将参数实际添加到“params”集合中,所以我更新了代码。现在它“工作”了;-)
Imports System.Runtime.CompilerServices
Public Module AdoParameterExtensions
<System.Runtime.CompilerServices.Extension()> _
Public Sub AddWithNumericValue(ByVal params As System.Data.SqlClient.SqlParameterCollection, ByVal parameterName As String, ByVal parameterType As SqlDbType, ByVal value As Object)
Dim newParam As New System.Data.SqlClient.SqlParameter
With newParam
.ParameterName = parameterName
.SqlDbType = parameterType
.Value = value
End With
params.Add(newParam)
End Sub
<System.Runtime.CompilerServices.Extension()> _
Public Sub AddWithStringValue(ByVal params As System.Data.SqlClient.SqlParameterCollection, ByVal parameterName As String, ByVal parameterType As SqlDbType, ByVal size As Integer, ByVal value As Object)
Dim newParam As New System.Data.SqlClient.SqlParameter
With newParam
.ParameterName = parameterName
.SqlDbType = parameterType
.Size = size
.Value = value
End With
params.Add(newParam)
End Sub
End Module
感谢您的反馈。
【问题讨论】:
标签: .net vb.net extension-methods