Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查实体框架中存储过程的返回值_C#_Stored Procedures_Entity Framework 6 - Fatal编程技术网

C# 如何检查实体框架中存储过程的返回值

C# 如何检查实体框架中存储过程的返回值,c#,stored-procedures,entity-framework-6,C#,Stored Procedures,Entity Framework 6,我有一个存储过程调用,但我想得到存储过程的返回值。返回类型为整数。在调用存储过程的代码后面 else if(ReportName=="LandMarkInOutReport") { _DBContext.LandMarkInOutReport(report.ReportParameters.StartDate, report.ReportParameters.EndDate, Convert.ToInt64(paramArr1[3]), Convert.To

我有一个存储过程调用,但我想得到存储过程的返回值。返回类型为整数。在调用存储过程的代码后面

 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]);     
        }

因此,请指导我如何获取返回值,这是在实体框架中调用存储过程的正确方法吗?

首先是数据库

首先,必须将存储过程添加到.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(“LandMarkInOutReport@StartDate、@EndDate、@param3、@param4、@param5、@param6、@param7”,
新的SqlParameter(“StartDate”,report.ReportParameters.StartDate),
新的SqlParameter(“EndDate”,report.ReportParameters.EndDate),
新的SqlParameter(“param3”,Convert.ToInt64(paramArr1[3]),
新的SqlParameter(“param4”,Convert.ToInt32(paramArr1[9]),
新的SqlParameter(“param5”,Convert.ToInt32(paramArr1[11]),
新的SqlParameter(“param6”,paramArr1[5]),
新的SqlParameter(“param7”,paramArr1[7])。FirstOrDefault();

int returnVal=_DBContext.LandMarkInOutReport(report.ReportParameters.StartDate、report.ReportParameters.EndDate、Convert.ToInt64(paramArr1[3])、Convert.ToInt32(paramArr1[9])、Convert.ToInt32(paramArr1[11])、paramArr1[5]和paramArr1[7])这应该可以。@Mairaj bro它返回vonversion Error我想要返回值这就是返回值。。。SP是否返回值?您是否先使用代码,先使用数据库,…?存储过程返回整数…它的代码先被添加到edmx文件中,但如果我像您所说的那样,它会给出conversion@User123埃德克斯?那么首先是数据库?你能把错误贴出来吗?
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();