c#如何将存储过程参数动态传递到api中



我正在使用.net core7 minimum api创建web api。我创建了一个函数来调用从数据库中的表中获取的存储过程。

我遇到了一个将sp参数传递到函数中的问题。

表示例(web_api.dbo.app_event):

方法false[/tr>true[/tr>
eventKey sp参数
/getstorer [dbo]。[sGetStorer] get
/getsku [dbo]。[sGetSkuByStorer] get

您可以注入HttpRequest来检索请求"s信息:

app.MapGet("/foo", (HttpRequest request) =>
{
//...
foreach (var param in request.Query)
{
cmd3.Parameters.Add(new SqlParameter("@" + param.Key, param.Value.First()));
}
//...
})

param.Value是一个集合,因为可以调用类似的url

/foo?param1=value1a&param1=value1b

request.Query["param1"]将是["value1a", "value1b"]

创建一个函数,该函数将返回带有所需参数的Func。例如,解析p查询参数并返回string的处理程序函数可以如下所示:

Func<string, string> GetFuncForSp(string sp) => p =>
{
// call sp:
DataTable dt = new();
using SqlConnection connn = new(strConstr);
using SqlCommand cmd3 = new(sp, connn);
// ...
}

用途:

app.MapGet(_eventkey, GetFuncForSp(_sp));

最新更新