LINQ to SQL語句(20)之存儲過程
作者: 李永京 來源: 博客園 發布時間: 2008-09-18 17:23 閱讀: 13067 次 推薦: 0 原文鏈接 [收藏]
摘要:這個系列的第二十篇,講解存儲過程用法。
[1] 標量返回和單一結果集
[2] 多個可能形狀的單一結果集
[3] 多個結果集
[4] 帶輸出參數
系列文章導航:
LINQ to SQL語句(2)之Select/Distinct
LINQ to SQL語句(3)之Count/Sum/Min/Max/Avg
LINQ to SQL語句(6)之Group By/Having
LINQ to SQL語句(7)之Exists/In/Any/All/Contains
LINQ to SQL語句(8)之Concat/Union/Intersect/Except
LINQ to SQL語句(9)之Top/Bottom和Paging和SqlMethods
LINQ to SQL語句(12)之Delete和使用Attach
LINQ to SQL語句(14)之Null語義和DateTime
LINQ to SQL語句(19)之ADO.NET與LINQ to SQL
存儲過程
在我們編寫程序中,往往需要一些存儲過程,在LINQ to SQL中怎么使用呢?也許比原來的更簡單些。下面我們以NORTHWND.MDF數據庫中自帶的幾個存儲過程來理解一下。
1.標量返回
在數據庫中,有名為Customers Count By Region的存儲過程。該存儲過程返回顧客所在"WA"區域的數量。
ALTER PROCEDURE [dbo].[NonRowset] (@param1 NVARCHAR(15)) AS BEGIN SET NOCOUNT ON; DECLARE @count int SELECT @count = COUNT(*)FROM Customers WHERECustomers.Region = @Param1 RETURN @count END
我們只要把這個存儲過程拖到O/R設計器內,它自動生成了以下代碼段:
[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)(MethodInfo.GetCurrentMethod())), param1); return ((int)(result.ReturnValue)); }
我們需要時,直接調用就可以了,例如:
int count = db.CustomersCountByRegion("WA"); Console.WriteLine(count);
語句描述:這個實例使用存儲過程返回在“WA”地區的客戶數。
2.單一結果集
從數據庫中返回行集合,并包含用于篩選結果的輸入參數。 當我們執行返回行集合的存儲過程時,會用到結果類,它存儲從存儲過程中返回的結果。
下面的示例表示一個存儲過程,該存儲過程返回客戶行并使用輸入參數來僅返回將“London”列為客戶城市的那些行的固定幾列。
ALTER PROCEDURE [dbo].[Customers By City]