如何解决如何使用entities.Database.SqlQuery获取字段的所有值?
我有一个存储过程,该存储过程可能返回一个字段的多个值。
我需要创建一个API
来获取同一字段的所有值。
我的控制器具有以下代码:
public partial class get_active_call_info_id_Result
{
public int call_info_id { get; set; }
}
public partial class error_message
{
public int StatusCode { get; set; }
}
[BasicAuthentication]
[Route("getactivecallinfoid")]
[HttpPost,ActionName("getactivecallinfoid")]
public System.Web.Http.Results.JsonResult<String> GetACII(String u_id)
{
//var data = (dynamic)null;
using (EMSMVCEntities entities = new EMSMVCEntities())
{
String jsonResult = null;
String jsonResult_log = null;
entities.Configuration.ProxyCreationEnabled = false;
var query = entities.Database.SqlQuery<get_active_call_info_id_Result>("exec [dbo].[get_active_call_info_id] @user_id",new SqlParameter("user_id",u_id))
.Select(x => new
{
x.call_info_id,StatusCode = 1 //Success StatusCode
}).ToList();
bool isEmpty = !query.Any();
if (isEmpty)
{
error_message error_status = new error_message()
{
StatusCode = 0
};
jsonResult = JsonConvert.SerializeObject(error_status);
}
else
{
jsonResult = JsonConvert.SerializeObject(query[0]); // <-- using Newtonsoft.Json
}
return Json(jsonResult);
}
}
我通过POSTMAN
调用此API的结果是:
"{\"call_info_id\":3,\"StatusCode\":1}"
正确的应该是这样的:
"{\"call_info_id\":3,\"call_info_id\":4,\"StatusCode\":1}"
解决方法
我使用dictionary
找到了解决方案:
[BasicAuthentication]
[Route("getactivecallinfoid")]
[HttpPost,ActionName("getactivecallinfoid")]
public System.Web.Http.Results.JsonResult<String> GetACII(String u_id)
{
using (EMSMVCEntities entities = new EMSMVCEntities())
{
String jsonResult = null;
String jsonResult_log = null;
entities.Configuration.ProxyCreationEnabled = false;
var query_pre = entities.Database.SqlQuery<get_active_call_info_id_Result>("exec [dbo].[get_active_call_info_id] @user_id",new SqlParameter("user_id",u_id))
.ToList();
var query = new Dictionary<String,String>();
int counter = 1;
foreach (var item in query_pre)
{
query.Add("call_info_id_"+counter.ToString(),item.call_info_id.ToString());
counter += counter;
};
query.Add("StatusCode","1");
bool isEmpty = !query.Any();
if (isEmpty)
{
error_message error_status = new error_message()
{
StatusCode = 0
};
jsonResult = JsonConvert.SerializeObject(error_status);
}
else
{
jsonResult = JsonConvert.SerializeObject(query); // <-- using Newtonsoft.Json
}
return Json(jsonResult);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。