首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

LINQ to SQL 進階(五):儲存程序詳細篇

     編輯:關於.NET

儲存程序與 UDF 差異:SP 支援多結果集、僅回傳 int、支援 Output 參數;UDF 單結果集、可回傳標量/表值、支援內聯查詢。

1. 單一結果集

對應 ISingleResult<TResult>,非延遲執行,可接 LINQ to Objects 操作(如 OrderBy)。可在 OR Designer 變更結果類別,但需注意型別相容。

2. 多結果集

SP 多個 SELECT 需手動修改 DBML/代碼:

  • 回傳型別改 IMultipleResults。
  • 加上多個 [ResultType(typeof(T))] 屬性,順序對應 SELECT 順序。

呼叫端依序 GetResult<T1>()、GetResult<T2>(),超過結果集數量會拋例外。

3. Output 參數

對應 ref 參數,內部透過 result.GetParameterValue(index) 取值(索引從 0 起)。

4. Return Value

LINQ 預設忽略 SP Return Value,需自行修改代碼取得:

  • 無結果集 SP:直接 (int)result.ReturnValue。
  • 有結果集 SP:包裝方法輸出 out int returnValue,或修改 GetParameterValue 索引(最後一個參數索引+1 為 Return Value)。

範例:CustOrderTotal

[Function(Name="dbo.CustOrderTotal")]
public int CustOrderTotal(string customerID, ref decimal? totalSales) {
    var result = this.ExecuteMethodCall(this, methodInfo, customerID, totalSales);
    totalSales = (decimal?)result.GetParameterValue(1);
    return (int)result.ReturnValue;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved