提供 SqlDbType 的有效方式?

Efficient way of providing SqlDbType?

我在下面有这个工作代码。但是,我没有采用名称、值和 SqlDbType 的 SqlParameter 构造函数,我只想提供日期参数的类型。有没有一种不需要添加大量代码的方法?

SqlParameter[] parameters =  
{
    new SqlParameter("@START_ORDER", startOrder),
    new SqlParameter("@END_ORDER", endOrder), 
    new SqlParameter("@START_ITEM", startItem), 
    new SqlParameter("@END_ITEM", endItem), 
    new SqlParameter("@START_DUEDATE", dateFrom), 
    new SqlParameter("@END_DUEDATE", dateTo)
};
new SqlParameter("@name", SqlDbType.Whatever) { Value = value }

constructor overloads 接受各种参数,但它们可能不值得指定每个参数的麻烦。上面的内容可能就这么简单。

(请注意,在某些情况下,您可能希望设置 SqlValue 而不是 Value。)

如果您要进行大量手动操作 ADO.NET,一个不错的选择可能是在基础 class 或实用程序 class 中构建一些助手,这也有助于确保您传递正确的类型:

public static SqlParameter CreateStringParam(string paramName,
    int length, string value) {}
public static SqlParameter CreateIntParam(string paramName,
    int? value) {}
// etc...

这些助手可以帮助您将 null 转换为 DBNull.Value,并确保您记住字符串和数字的参数大小。

您最多需要构建一打左右,但很可能您只使用了少数几种数据类型,因此您不需要很多。