摘要:Entity Framework stored procedure output null
情況:stored procedure有使用 param out,也有在最後回傳結果集合(select ...),兩種回傳方式混合使用造成透過 param output拿回的值一直是 null。
解法:http://stackoverflow.com/a/7183184/4963421,最後加個 Count() 強迫執行查詢,收工。
比較 EF針對兩者產生的程式碼
public virtual ObjectResult sp_NAME(...)
{ // 回傳結果集
//...
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction(//"...);
//使用指定的參數,執行資料來源中所定義且在概念模型中有所對應的預存程序或函式。 傳回具型別的 System.Data.Objects.ObjectResult。
}
public virtual int sp_NAME(...)
{ // param output
//...
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction(//"...);
//執行資料來源中所定義和以概念模型表示的預存程序或函式、捨棄函式傳回的任何結果,然後傳回受執行所影響的資料列數目。
}
嗯…解決後回頭看函式說明才想到,啊,原來是這個差別 囧
感覺像 IEnumerable vs IQueryable、Func<> vs Expression<Func<>>