[英]Stored procedure return value -1 in EF
我正在使用 EF 并且我正在调用一个存储过程。 我得到的返回值是 -1,但是当我在 SQL Server 中执行这个存储过程时,结果是正确的。
当我使用这个
var Reg_ID = _db.Database.SqlQuery<Registration("SP_RandomNo_Reg").SingleOrDefault();
我得到了错误
"System.Data.Entity.Core.EntityCommandExecutionException: '数据读取器与指定的 'ECommercedbModel.Registration' 不兼容。类型为 'Name' 的成员在数据读取器中没有对应的同名列.'”
模型类:
public partial class Registration
{
public int Reg_ID { get; set; }
public string Name { get; set; }
}
Eshopping混凝土:
public string mMaxNo_Reg()
{
var Reg_ID = _db.Database.ExecuteSqlCommand("SP_RandomNo_Reg");
return Reg_ID.ToString();
}
控制器:
public JsonResult mMax_No_Rg()
{
try
{
ViewBag.max_ID = _IRegistration.mMaxNo_Reg();
return Json(ViewBag.max_ID, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
throw ex;
}
}
存储过程:
ALTER PROCEDURE [dbo].[SP_RandomNo_Reg]
AS
BEGIN
SELECT
RIGHT('000'+ CAST(ISNULL(MAX(Reg_ID), 0) + 1 AS VARCHAR(4)) + '', 4) AS Reg_ID
FROM
Registration
END
要执行存储过程并返回类型字符串,请将语句更改为:
public string mMaxNo_Reg()
{
return _db.Database.SqlQuery<string>("SP_RandomNo_Reg").Single();
}
ExecuteSqlCommand
不是用于返回数据,而是用于 DELETE、INSERT 和 UPDATE。 如果您需要从 SP 返回数据,请使用FromRawSql
:
public string mMaxNo_Reg()
{
var reg = _db.Registrations.FromSqlRaw("EXECUTE SP_RandomNo_Reg");
return reg.Reg_ID.ToString();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.