首页 > 解决方案 > 如何编写可以调用任何存储过程的通用 Web API 函数

问题描述

我想在 .NET CORE 2.1 (C#) 中编写一个控制器,它公开一个SINGLE函数,该函数可用于调用 sql server 中的任何存储过程。

所以这个函数必须能够接受未定义参数的列表,并且它必须能够返回存储过程正在创建的数据集。

这可能吗?我是 Web API 的新手。我在 SQL Server 和 Windows 客户端中练习过,但我对 Web API 和 C# 后端一般来说是新手。

标签: c#sql-serverasp.net-web-apiasp.net-core-webapi

解决方案


与每个大问题一样,考虑将其拆分。您需要一个可以执行任何存储过程的方法。

执行存储过程需要什么?

  1. 其名称
  2. 参数名称、类型和值的列表
  3. 最后,您需要返回未指定的数据。

所以,找到一种方法来传递这些数据,然后找到一种方法将所有这些数据转换成你的存储过程接受的东西,这取决于你用什么来调用它,是直接 ADo.Net,是 Dapper,是EF之类的吗?

可能吗?是的,当然,只要您找到做这些事情的方法。

开始简单,首先是一个没有输入参数的存储过程。让它工作,然后继续使用一个参数进行存储过程,看看它是如何进行的。

您的第一个模型可能如下所示:

public class InputModel  
{
     public string StoredProcedureName {get;set;}     

     public List<StoredProcedureParameter> StoredProcedureParameters
}

然后添加参数部分:

public class StoredProcedureParameter 
{
    public string Name { get;set; }  
    public TypeEnum ParamType { get; set }
    public string Value { get;set; }
}

这是我将如何处理它的一个例子。

现在我有了我的输入,我只需要将这些转换为用于执行 sp 的任何内容。

一旦您设法执行 sp,您就可以决定如何返回数据。您可以为此使用dynamic数据类型,API 会将其序列化为 JSON,因此您应该没有问题。

基本上一次一小步。这是可以做到的,我过去也做过类似的事情。


推荐阅读