我正在使用EF,并且正在调用存储过程。我得到的返回值为-1,但是当我在SQL Server中执行此存储过程时,结果是正确的。
当我使用此
@executable_path
我遇到了错误
“ System.Data.Entity.Core.EntityCommandExecutionException:'数据读取器与指定的'ECommercedbModel.Registration'不兼容。类型'Name'的成员在数据读取器中没有与之对应的列,相同的名字。'“
模型类:
var Reg_ID = _db.Database.SqlQuery<Registration("SP_RandomNo_Reg").SingleOrDefault();
EShoppingConcrete:
public partial class Registration
{
public int Reg_ID { get; set; }
public string Name { get; set; }
}
控制器:
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;
}
}
答案 0 :(得分:1)
要执行存储过程并返回类型字符串,请将语句更改为:
public string mMaxNo_Reg()
{
return _db.Database.SqlQuery<string>("SP_RandomNo_Reg").Single();
}
答案 1 :(得分:0)
ExecuteSqlCommand
不用于返回数据,其用于DELETE,INSERT和UPDATE。如果需要从SP返回数据,请使用FromRawSql
:
public string mMaxNo_Reg()
{
var reg = _db.Registrations.FromSqlRaw("EXECUTE SP_RandomNo_Reg");
return reg.Reg_ID.ToString();
}