簡體   English   中英

是否可以使用LINQ從存儲過程中返回返回值和結果集

[英]Is it possible to return a return value and a result set from a stored procedure using LINQ

尋找有關獲取返回值和結果集的最干凈方法的建議(不將引用的參數傳遞給存儲的proc)。

MY存儲的proc具有返回值以顯示錯誤等,並且它們以select語句結尾以獲取信息。 使用常規命令,我將創建一個包含返回值的輸出參數。 我無法更改數據庫中存儲的proc,因此除了返回值之外,我無法傳遞其他輸出參數。

想法?

在LINQ to SQL Data Context設計器中通過從Server Explorer拖動存儲過程來創建存儲過程時,設計器將分析該存儲過程,以確定它是否返回結果集。 除非它具有沉重的動態SQL,否則通常都是這樣。

如果是這樣,則生成的方法將返回ISingleResult<T> ,其中T是通過對存儲過程進行分析以適合結果集形狀而生成的類,或者是在存儲屬性頁中指定的類。 因為ISingleResult派生自IEnumerable ,所以大多數人都對結果進行簡單的foreach獲取其結果集。 但是大多數人都忘記了ISingleResult 也是IFunctionResult派生的, IFunctionResult具有名為ReturnValue的屬性。 這是存儲過程的返回值。

因此,您所要做的只是以下幾方面的事情:

using(var dc = new MyDataContext())
{
    var results = dc.MyStoredProcedure();
    var returnValue = (int)results.ReturnValue; // note that ReturnValue is of type object and must be cast.
    foreach(var row in results)
    {
        // process row
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM