使用int从MVC4中的存储过程返回的结果 [英] consume int result returned from stored procedure in MVC4
问题描述
我创建了这样的存储过程:
I have created stored procedure like this:
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
在控制器中,我试图获取返回结果,如下所述:
In controller I am trying to get return result as mention below:
[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'
Cannot convert type 'System.Data.Objects.ObjectResult' to 'int'
我无法从存储过程中获得单个返回值。
I am not able to get single return value from stored procedure.
希望我能找到正确的解决方案。
Hope I get the right solution.
推荐答案
-
创建视图为
Create view as
创建视图[dbo]。[ vScalar]
AS
选择''AS值
CREATE VIEW [dbo].[vScalar] AS SELECT '' AS Value
在存储过程中返回
SELECT CAST(orderId AS VARCHAR(10))AS值
SELECT CAST(orderId AS VARCHAR(10)) AS value
在Entity Framework中,设置函数返回使用实体vScalar
In Entity Framework, set function return use entity vScalar
在代码中
vScalar orderId = db.takeOrder(objOreder.oid,objOreder.userId,objOreder.dining_Id,objOreder.amount ).FirstOrDefault;
vScalar orderId = db.takeOrder(objOreder.oid, objOreder.userId, objOreder.dining_Id, objOreder.amount).FirstOrDefault;
oid =(int)orderId.value;
oid = (int)orderId.value;
这篇关于使用int从MVC4中的存储过程返回的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!