我如何检查 return 中存储过程的值 entity framework
how can i check return value of stored procedure in entity framework
我有一个存储过程调用,但我想获取存储过程的 return 值。 Return 类型是整数。按照我调用存储过程的代码
else if(ReportName=="LandMarkInOutReport")
{
_DBContext.LandMarkInOutReport(report.ReportParameters.StartDate, report.ReportParameters.EndDate, Convert.ToInt64(paramArr1[3]), Convert.ToInt32(paramArr1[9]), Convert.ToInt32(paramArr1[11]), paramArr1[5], paramArr1[7]);
}
所以请指导我如何获取 return 值,这是否是在 entity framework 中调用存储过程的正确方法?
数据库优先
首先,您必须将存储过程添加到 .edmx 文件中。
如果你有一个上下文变量_DBContext并且存储过程被称为LandMarkInOutReport,你可以这样执行它:
LandMarkInOutReport_Result returnValue = _DBContext.LandMarkInOutReport(report.ReportParameters.StartDate, report.ReportParameters.EndDate, Convert.ToInt64(paramArr1[3]), Convert.ToInt32(paramArr1[9]), Convert.ToInt32(paramArr1[11]), paramArr1[5], paramArr1[7]).FirstOrDefault();
不在数据库上执行不带 .FirstOrDefault()
的存储过程调用。
现在您可以使用 returnValue 来调用正确的变量,例如:returnValue.ReturnVariableName.
代码优先
您可以使用 .SqlQuery<> 调用存储过程:
int returnValue = _DBContext.SqlQuery<int>("LandMarkInOutReport @StartDate, @EndDate, @param3, @param4, @param5, @param6, @param7",
new SqlParameter("StartDate", report.ReportParameters.StartDate),
new SqlParameter("EndDate", report.ReportParameters.EndDate),
new SqlParameter("param3", Convert.ToInt64(paramArr1[3])),
new SqlParameter("param4", Convert.ToInt32(paramArr1[9])),
new SqlParameter("param5", Convert.ToInt32(paramArr1[11])),
new SqlParameter("param6", paramArr1[5]),
new SqlParameter("param7", paramArr1[7])).FirstOrDefault();
我有一个存储过程调用,但我想获取存储过程的 return 值。 Return 类型是整数。按照我调用存储过程的代码
else if(ReportName=="LandMarkInOutReport")
{
_DBContext.LandMarkInOutReport(report.ReportParameters.StartDate, report.ReportParameters.EndDate, Convert.ToInt64(paramArr1[3]), Convert.ToInt32(paramArr1[9]), Convert.ToInt32(paramArr1[11]), paramArr1[5], paramArr1[7]);
}
所以请指导我如何获取 return 值,这是否是在 entity framework 中调用存储过程的正确方法?
数据库优先
首先,您必须将存储过程添加到 .edmx 文件中。 如果你有一个上下文变量_DBContext并且存储过程被称为LandMarkInOutReport,你可以这样执行它:
LandMarkInOutReport_Result returnValue = _DBContext.LandMarkInOutReport(report.ReportParameters.StartDate, report.ReportParameters.EndDate, Convert.ToInt64(paramArr1[3]), Convert.ToInt32(paramArr1[9]), Convert.ToInt32(paramArr1[11]), paramArr1[5], paramArr1[7]).FirstOrDefault();
不在数据库上执行不带 .FirstOrDefault()
的存储过程调用。
现在您可以使用 returnValue 来调用正确的变量,例如:returnValue.ReturnVariableName.
代码优先
您可以使用 .SqlQuery<> 调用存储过程:
int returnValue = _DBContext.SqlQuery<int>("LandMarkInOutReport @StartDate, @EndDate, @param3, @param4, @param5, @param6, @param7",
new SqlParameter("StartDate", report.ReportParameters.StartDate),
new SqlParameter("EndDate", report.ReportParameters.EndDate),
new SqlParameter("param3", Convert.ToInt64(paramArr1[3])),
new SqlParameter("param4", Convert.ToInt32(paramArr1[9])),
new SqlParameter("param5", Convert.ToInt32(paramArr1[11])),
new SqlParameter("param6", paramArr1[5]),
new SqlParameter("param7", paramArr1[7])).FirstOrDefault();