2012-02-20 44 views

回答

30

當你創建你的實體模型時,你應該確保你包含存儲過程。然後,爲他們創造函數導入:

  1. 在Visual Studio中打開你的實體模型
  2. 模型瀏覽器應在屏幕
  3. 在模型瀏覽器的右側打開,您需要選擇存儲程序並單擊添加功能導入爲存儲過程創建功能。
  4. 一個對話框,將打開選擇存儲過程和返回類型

就是這樣。現在你可以在代碼中使用它。

using (MyEntities myContext = new MyEntities())    
{     
    System.Data.Objects.ObjectParameter output = new System.Data.Objects.ObjectParameter("OutputParameterName", typeof(int));     
    myContext.GetCustomerCount(output);     
    Console.WriteLine(output.Value);    
} 
+0

謝謝達納! – 2012-02-20 20:19:14

+4

我在我的代碼中解決了類似的模式,並且我注意到輸出參數的Value屬性在訪問輸出結果集後被填充。 – 2013-05-16 08:13:49

+1

@RudolfDvoracek是的,輸出參數在讀取結果數據集後被填充。 – Anderson 2014-12-17 20:04:53

10

的實體框架6.x的修正的應答/ VS 2015年 - 注意到命名空間變化:

using (MyEntities myContext = new MyEntities())    
{     
    System.Data.Entity.Core.Objects.ObjectParameter output = new System.Data.Entity.Core.Objects.ObjectParameter("OutputParameterName", typeof(int));     
    myContext.GetCustomerCount(output);     
    Console.WriteLine(output.Value);    
} 
0

下面是使用實體框架,這樣做的另一種方式

YourDB db = new YourDB(); 
public double GetCategoryYearly(double Param1, double Param2, double Param3) 
{ 
    System.Data.Entity.Core.Objects.ObjectParameter OutputParam = new System.Data.Entity.Core.Objects.ObjectParameter("SPOutputParam", typeof(double)); 
    var objStoredProc = db.YourStoredProc(Param1, Param2, Param3, OutputParam).First(); 
    return Convert.ToDouble(OutputParam.Value); 
}