Asp.net web api 从控制器返回ADO.Net查询作为JSON数组
我有以下数据库类,它使用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内核,因此非常感谢您的帮助 数据库类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)使用模型方法
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是已执行查询的输出列表