Entity Framework stored procedure output null

  • 348
  • 0

摘要: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<>>