2015-06-02 40 views
1

我有一個存儲過程調用,但我想要獲取存儲過程的返回值。返回類型是整數。繼我在哪裏調用存儲過程我如何檢查實體框架中存儲過程的返回值

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

所以,請指導我怎樣才能得到返回值,也就是它的正確方法調用實體框架的存儲過程?

+0

'INT returnVal = _DBContext.LandMarkInOutReport(report.ReportParameters.StartDate,report.ReportParameters。 EndDate,Convert.ToInt32(paramArr1 [3]),Convert.ToInt32(paramArr1 [9]),Convert.ToInt32(paramArr1 [11]),paramArr1 [5],paramArr1 [7]);'This should work。 – Mairaj

+0

@Mairaj bro它返回vonversion錯誤 – ARC

回答

1

數據庫首先

首先,你有你的存儲過程添加到的.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(); 
+0

我想返回值 – ARC

+0

這就是* returnValue *是...你的SP返回一個值嗎?你使用Code First,Database First,..? – Loetn

+0

存儲過程返回整數...其代碼第一我認爲 – ARC