我是MVC的新手,并尝试从控制器调用存储过程。
在模型中,我有edmx,它将所有存储过程作为函数
无法隐式转换类型
System.Collections.Generic.IEnumerable<MVC.Models.xxcomplextype_result>
到System.Web.Mvc.ActionResult
存在显式转换。
我在控制器和动作结果函数中为实体创建了一个对象,我调用了调用存储过程的函数,它返回了上面的错误。 我应该如何将结果集转换为actionresult?
代码示例
public class DBController : Controller
{
XXXXXXXEntities xXXXXXEntities = new XXXXXXXEntities();
public IEnumerable<usp_xxxxx_Result> usp_xxxxx()
{
return XXXXXEntities.usp_xxxxx();
}
}
public ActionResult ViewQuery() {
DBController dBController = new DBController();
return dBController.usp_xxxxx();
}
答案 0 :(得分:7)
您需要返回一个继承自ActionResult的类。
可能你想要这样的东西:
public ActionResult ViewQuery() {
DBController dBController = new DBController();
return View(dBController.usp_xxxxx());
}
返回视图,结果作为Model传递。
如果要返回使用JSON:
public ActionResult ViewQuery() {
DBController dBController = new DBController();
return JSON(dBController.usp_xxxxx());
}
答案 1 :(得分:1)
.ToArray()解决了这个问题。
public class DBController : Controller
{
XXXXXXXEntities xXXXXXEntities = new XXXXXXXEntities();
public IEnumerable<usp_xxxxx_Result> usp_xxxxx()
{
return XXXXXEntities.usp_xxxxx();
}
}
public ActionResult ViewQuery() {
DBController dBController = new DBController();
return dBController.usp_xxxxx().ToArray();
}