Question

I am new to MVC, and trying to call a stored proc from the controller.

In the model I have edmx which has all stored procs as functions

Cannot implicitly convert type System.Collections.Generic.IEnumerable<MVC.Models.xxcomplextype_result> to System.Web.Mvc.ActionResult
An explicit conversion exists.

I created an object for the entity in the controller and in an action result function I called the function calling the stored proc and it returned the above error. How should I convert the result set to actionresult?

Code Sample

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();
}
Was it helpful?

Solution

You'll need to return a class that inherits from ActionResult.

Probably you want something like:

public ActionResult ViewQuery() {
        DBController dBController = new DBController();
        return View(dBController.usp_xxxxx());
}

This returns the view with the result passed in as Model.

If you want to return JSON use:

public ActionResult ViewQuery() {
        DBController dBController = new DBController();
        return JSON(dBController.usp_xxxxx());
}

OTHER TIPS

.ToArray() solves the issue.

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();
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top