Stored procedures 使用多个参数调用存储过程的最佳代码是什么
我意识到我有一个非常大的方法,它创建SqlParameter对象并将它们添加到SqlCommand(cmd)中。例如:Stored procedures 使用多个参数调用存储过程的最佳代码是什么,stored-procedures,Stored Procedures,我意识到我有一个非常大的方法,它创建SqlParameter对象并将它们添加到SqlCommand(cmd)中。例如: SqlParameter itemType = new SqlParameter { ParameterName = "ItemType", Direction = ParameterDirection.Input, SqlDbType = SqlDbType.Int, Value = (int)item.ItemType }; cmd.Par
SqlParameter itemType = new SqlParameter
{
ParameterName = "ItemType",
Direction = ParameterDirection.Input,
SqlDbType = SqlDbType.Int,
Value = (int)item.ItemType
};
cmd.Parameters.Add(itemType);
一个存储过程在设计上有很多参数,并且设计不能更改
我不喜欢用几页代码来创建参数。这很难理解/支持。当然我可以在这里使用区域,但问题是关于代码
你有什么想法可以改进我的代码吗
目前,我在这里只看到一种方法:我需要使用自定义属性为每个项属性指定参数名称、方向和db类型。在这种情况下,我需要使用反射,我不确定它是否是最佳选择
你觉得呢
谢谢。Erland Sommerkog的文章“描述了许多不同的方法,包括好的和坏的。”
重复的:可能我理解错了您的问题,但为什么不将实例化参数的代码抽象出来,并将其添加到辅助函数的命令对象中呢 像这样的 AddSqlParam(“ParamName1”,SqlDbType.Int,val1,ParameterDirection.Input,command); AddSqlParam(“ParamName2”,SqlDbType.String,val2,ParameterDirection.Input,command) 您可以通过将常用参数转换成小的辅助函数来进一步重构它。 例如,大多数数据库都有一个ID列 所以你可以有一个像addParam(command)这样的方法
我希望我能表达我的观点。这是一种更精简的格式,您可以使用
SqlCommand command = new SqlCommand();
command.Parameters.Add(new SqlParameter("@param1", SqlDbType.NVarChar, 255));
command.Parameters[command.Parameters.Count - 1].Value = "value1";
command.Parameters.Add(new SqlParameter("@param2", SqlDbType.NVarChar, 255));
command.Parameters[command.Parameters.Count - 1].Value = "value2";
command.Parameters.Add(new SqlParameter("@param3", SqlDbType.NVarChar, 255));
command.Parameters[command.Parameters.Count - 1].Value = "value3";
另一种方法是使SqlCommand成为类的成员字段,并使用成员方法对其进行初始化 这类似于VisualStudio在创建组件,然后将SqlCommand拖到设计图面上时生成的代码。如果使用参数化查询或带有参数的存储过程配置SqlCommand,则它将生成代码来创建SqlParameter对象并将其添加到parameters属性 要在以后的代码中使用该SqlCommand,可以执行以下操作:
m_Command.Parameters["@ParamName"].Value = value;