过程或函数sp_XXXX指定了太多参数
本文关键字:太多 参数 XXXX 函数 sp 过程 | 更新日期: 2023-09-27 18:18:59
我使用Dapper的dynamicparameters对象与模板参数来生成我的实体参数。在我调用存储过程之后,我得到了以下错误"过程或函数sp_MemberSave指定了太多参数"。我确实在一些实体上有额外的属性,用于业务逻辑等。是否有一种方法可以确保dapper只传递存储过程的实际参数?Dapper似乎会先读取存储过程,然后设置参数,这样它只会使用正确的参数。如何使用模板功能限制参数?
尝试从您的对象中创建一个匿名类型的适当参数…如果你的类有A、B、C和D,而你只需要A和B:
DynamicParameters(new { A = entity.A, B = entity.B });
我能说清楚吗?如果您只是传递实体(而不是DynamicParameters
),则将执行此分析;即conn.Execute("some sql", someEntity);
-然后它将只添加someEntity
的成员,它可以看到在SQL中使用。可能会有一些误报,因为它不执行完整的词法SQL分析,所以注释中的参数,即:
-- removed by Fred: where row.Date < @StartDate
仍将包括在内(因此在上面的示例中,成员StartDate
将是合格的,即使它实际上可能不需要)。然而
;DynamicParameters
目前信任自定义实现。我想我们可以将参数分析检查移到这一点之后,但我更愿意先了解完整的场景。