调用两个存储过程并将结果合并到一个控制器中的单个模型中
本文关键字:控制器 一个 单个 模型 结果 两个 存储过程 调用 合并 | 更新日期: 2023-09-27 18:01:53
我试图在我的MVC5 web应用程序中从一个控制器调用多个存储过程。然后,我将两个过程的结果合并到一个模型中。
public ActionResult ItemDetails(string itemNo, string custNo)
{
SqlParameter[] param =
{
new SqlParameter("@itemNo",itemNo),
new SqlParameter("@custNo", custNo)
};
var sqlData = itemDb.Database.SqlQuery<ItemDetailsModel>("ItemDetail @itemNo, @custNo", param).ToList();
var whsID = new SqlParameter("@warehouse", sqlData?[0].WhsID);
var sqlData2 = itemDb.Database.SqlQuery<ItemDetailsModel>("ItemPoLookup @itemNo, @warehouse", new SqlParameter("@itemNo", itemNo), whsID).ToList();
sqlData.AddRange(sqlData2);
return View(sqlData);
}
有可能在保持模型分离的同时实现这一点吗?我应该做两个get请求到我的web服务器,一个为每个存储过程,而不是将这一切合并成一个吗?如果是这样,将多个模型返回到cshtml视图的建议将不胜感激。
传递
List<List<<ItemDetailsModel>>
或
Dictionary<string, List<ItemDetailsModel>>`
如果您使用的是Dictionary<TKey, TValue>
,您可以传递一个字符串来标识两个存储过程。
如果您不想创建另一个ViewModel
并希望结果分开,请使用此
dynamic viewModel = new ExpandoObject();
viewModel.sqlData = sqlData;
viewModel.sqlData2 = sqlData2;
return View(viewModel);