【问题标题】:adding too many number of parameters in store process在存储过程中添加太多参数
【发布时间】:2015-05-28 14:36:56
【问题描述】:

这是我的问题,我想在我的应用程序中使用存储进程,但是参数太多,我正在寻找一种简单的方法来在我的存储进程中使用我的所有参数: 我正在考虑使用 propertyinfo 的解决方案 这是我的程序:

您有减少此过程的解决方案吗? 提前致谢

【问题讨论】:

  • 创建一个字符串列表并在其中添加您的@参数。接下来运行一个 for 循环来构造一个参数列表并将其添加到命令中。
  • 使用较短的重载之一:cmd2.Parameters.Add("@TK_Ty", SqlDbType.Int).Value = 10;

标签: c# .net wpf stored-procedures sqlcommand


【解决方案1】:

您可以使用 TVP 。它有助于将表参数传递到 sproc 并使其更易于访问。

通过使用 TVP,您可以多次使用它。无需从代码中创建每个参数。

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
【解决方案2】:

首先,我建议使用Dictionary<string, object> 而不是List<KeyValuePair<string, object>,因为字典已经实现了IEnumerable<KeyValuePair<T,T>

其次,您不需要显式创建每个参数,您几乎可以使用SqlCommand.Parameters.Add 的任何重载,因为它们将SqlParameter 对象返回给调用方法,允许您像这样指定参数值:

cmd2.Parameters.Add("@ParamName", SqlDBType.Int).Value = ParamValue;

在这种情况下,我什至不会使用参数列表,而是直接像这样添加它们:

cmd2.Parameters.Add("@TK_Num", SqlDBType.Int).Value = ticket.TK_Ty;
cmd2.Parameters.Add("@TK_Mouv", SqlDBType.Int).Value = ticket.TK_Mouv;
cmd2.Parameters.Add("@TK_Im", SqlDBType.Int).Value = ticket.TK_Immatriculation;
....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 2020-12-14
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 2017-09-26
    相关资源
    最近更新 更多