Asp.net web api 从控制器返回ADO.Net查询作为JSON数组

Asp.net web api 从控制器返回ADO.Net查询作为JSON数组,asp.net-web-api,asp.net-core-mvc,asp.net-core-3.1,Asp.net Web Api,Asp.net Core Mvc,Asp.net Core 3.1,我有以下数据库类,它使用ADO.NET连接到SQL数据库,而不使用任何模型。我使用GetData方法返回一个序列化的json字符串,然后在控制器a中的ActionResult get请求中转换该字符串,如下所示。问题是我首先从ADO.NET查询返回一个DataTable对象,然后使用第三方nuget包Newtonsoft将其序列化为字符串,该包在我的控制器中转换为json/应用程序类型。没有办法用更少的步骤或第三方插件来实现这些结果吗 当对数据库(如Entity Framework)使用模型方法

我有以下数据库类,它使用ADO.NET连接到SQL数据库,而不使用任何模型。我使用GetData方法返回一个序列化的json字符串,然后在控制器a中的ActionResult get请求中转换该字符串,如下所示。问题是我首先从ADO.NET查询返回一个DataTable对象,然后使用第三方nuget包Newtonsoft将其序列化为字符串,该包在我的控制器中转换为json/应用程序类型。没有办法用更少的步骤或第三方插件来实现这些结果吗

当对数据库(如Entity Framework)使用模型方法时,我能够使用Ok()方法将EF查询转换为JSON格式。这很简单,但我讨厌保留我永远不会使用的模型,所以我切换到ADO.NET。我仍在学习ADO.NET和ASP.NET内核,因此非常感谢您的帮助

数据库类

        public String GetData(String connectionString, string str, params IDataParameter[] sqlParams)
        {
            int rows = -1;
            DataTable objResult = new DataTable();

            try
            {
                SqlDataReader myReader;

                using (SqlConnection myCon = new SqlConnection(connectionString))
                {
                    myCon.Open();
                    using (SqlCommand myCommand = new SqlCommand(str, myCon))
                    {
                        if (sqlParams != null)
                        {
                            foreach (IDataParameter para in sqlParams)
                            {
                                myCommand.Parameters.Add(para);
                            }
                        } 

                        myReader = myCommand.ExecuteReader();
                        objResult.Load(myReader);

                        myReader.Close();
                        myCon.Close();
                    }
                }
            }
            catch (Exception ex)
            {
            }

            return JsonConvert.SerializeObject(objResult);

        }
控制器:

        public ActionResult DatatableLoad()
        {
            //Since ADO.NET returns a datatable we serialize it first in GetData()
            //We have parameters here just in case we want to use them
            string query = "select * from dbo.UserAccountsTbl WHERE USERNAME=@UserName;";

            var parameters = new IDataParameter[]
            {
                new SqlParameter("@UserName", "SB")
            };

            String jsonResult = db.GetData(connectionString, query, parameters);

            return Content(jsonResult, "application/json");
        }

要以JSON格式返回查询的输出,您需要执行以下操作:

        return Json(jsonResult, JsonRequestBehavior.AllowGet);
jsonResult是已执行查询的输出列表