Entity framework 使用MVC4中存储过程返回的int结果

Entity framework 使用MVC4中存储过程返回的int结果,entity-framework,asp.net-mvc-4,Entity Framework,Asp.net Mvc 4,我创建了如下存储过程: ALTER procedure [dbo].[takeOrder] ( @id int = 0, @userid int = 0, @diningid int, @amount float ) as begin declare @countt as int select @countt = COUNT(*) from Order_master where dining_Id = @diningid an

我创建了如下存储过程:

ALTER procedure [dbo].[takeOrder]
(
    @id int = 0,
    @userid int = 0,
    @diningid int,
    @amount float
)
as
begin
    declare @countt as int

    select @countt = COUNT(*) 
    from Order_master 
    where dining_Id = @diningid and isActive = 1

    if @countt <> 0
    begin
        update Order_master 
        set amount = @amount 
        where dining_Id = @diningid and isActive = 1;
    end
    else
    begin
        insert into Order_master(userid, dining_Id, amount, [date], isActive)
        values (@userid, @diningid, @amount, GETDATE(), 1)
    end

    --select amount from Order_master where dining_Id=@diningid and isActive=1
    select oid 
    from Order_master 
    where dining_Id = @diningid and isActive = 1
end
在控制器中,我试图获得如下所述的返回结果:

[HttpPost]
public ActionResult takeOrder(Order_master order,List<Menu_info> menu)
{
            String msg = "";
            int oid;

            if (ModelState.IsValid)
            {
                try
                {
                    Order_master objOreder = new Order_master
                    {
                        amount = order.amount,
                        isActive = 1,
                        date = order.date,
                        dining_Id = order.dining_Id,
                        userId = order.userId
                    };
                   object orderId = db.takeOrder(objOreder.oid, objOreder.userId, objOreder.dining_Id, objOreder.amount);                                     
                   oid = (int)orderId;
                   msg = "success..!!";
                }
                catch (Exception ex)
                {
                    msg = "error...";
                }
            }
            else
            {
                msg = "please provide info";
            }

            if (Request.IsAjaxRequest())
            {
                return new JsonResult { Data = msg, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
            }
            else
            {
                return View();
            }
}
但它返回一个异常

无法将类型“System.Data.Objects.ObjectResult”转换为“int”

我无法从存储过程中获取单个返回值

希望我得到正确的解决方案

object orderId = db.takeOrder(objOreder.oid, objOreder.userId, objOreder.dining_Id, objOreder.amount);                                     
oid = (int)orderId;
尝试这种转换方法

oid = Convert.ToInt32(orderId);
你可以用like

 public int InsertWebProperty(int orgid, int? userid, string address, string property_Id, string latitude, string longitude, int? compamyid)
    {
        return Convert.ToInt32((db.InsertWebProperty(orgid, userid, address, property_Id, latitude, longitude, 0)).FirstOrDefault().recidentity.Value);
    }
如果对你不起作用,请告诉我。。 谢谢

db.TakeOrder.FirstOrDefault.ToString=作为字符串返回的一个值

db.TakeOrder.FirstOrDefault.ToList=作为列表返回的行

创建视图为

创建视图[dbo]。[vScalar] 像 选择作为值

存储过程内返回

选择CASTorderId作为VARCHAR10作为值

在实体框架中,设置函数return use Entity vScalar

编码

vScalar orderId=db.takeorderrobjoreder.oid、objOreder.userId、objOreder.dinning\u Id、objOreder.amount.FirstOrDefault

oid=intorderId.value


它给出的异常为:{System.InvalidCastException:无法强制转换类型为'System.Data.Objects.ObjectResult1[System.Nullable1[System.Int32]]的对象'键入'System.IConvertible'。在System.Convert.ToInt32对象值处尝试使用:oid=orderId.FirstOrDefault;。ObjectResult可以有多个值-您需要请求第一个int才能返回结果