如何解决还有什么更简洁的方法来为动态exec存储过程构造参数列表?
我正在构造一个动态调用以执行带有2个参数的存储过程。
这是我如何在调用之前将参数放在一起的摘要...
有没有更简洁的说法或任何警告?
//parameters comes from: params SqlParameter[] parameters
parameters.Select((x,i) => new
{
item = x,index = i
})
.ToList()
.ForEach(obj =>
{
sb.AppendFormat($"@{paramNames[obj.index]}={obj.item.Value},");
});
var s = $"EXEC {storedProcName} {sb.ToString().TrimEnd(',',' ')}";
return Context.Set<T>().FromSqlRaw(s).ToList();
}
return Context.Set<T>().FromSqlRaw($"EXEC {spName}").ToList();
解决方法
您不应将参数值粘贴到字符串中。它应该只包含参数名称,然后将SqlParameter[]
作为第二个参数传递给FromSqlRaw
例如
foreach (var p in parameters)
{
sb.Append($"{p.Name},");
}
if (parameters.Count > 0)
{
sb.Length = sb.Length-2;
}
var sql = $"EXEC {storedProcName} {sb}";
return Context.Set<T>().FromSqlRaw(sql,parameters).ToList();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。