將 SQL Server 預存程序拖曳至 O/R 設計師,自動生成強型別方法,支援標量回傳值、單一/多重結果集。
ALTER PROCEDURE [dbo].[Customers Count By Region](@param1 NVARCHAR(15))
AS BEGIN
SET NOCOUNT ON;
DECLARE @count int;
SELECT @count = COUNT(*) FROM Customers WHERE Region = @param1;
RETURN @count;
END
[Function(Name = "dbo.[Customers Count By Region]")]
public int Customers_Count_By_Region([Parameter(DbType = "NVarChar(15)")] string param1)
{
IExecuteResult result = this.ExecuteMethodCall(this, MethodInfo.GetCurrentMethod(), param1);
return ((int)(result.ReturnValue));
}
int count = db.Customers_Count_By_Region("WA");
Console.WriteLine(count); // 輸出 WA 區域客戶數
FunctionAttribute 對應預存程序名稱(含 schema)ParameterAttribute 指定參數型別與長度ExecuteMethodCall 執行並取得 IExecuteResultReturnValue 取得標量回傳值;GetResult<T>() 取得結果集GetResult<T>()預存程序邏輯留在資料庫層,LINQ to SQL 僅負責型別安全呼叫,職責分離清晰。