您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“如何解決Linq存儲過程返回問題”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何解決Linq存儲過程返回問題”這篇文章吧。
存儲過程
在我們編寫程序中,往往需要一些存儲過程,在LINQ to SQL中怎么使用呢?也許比原來的更簡單些。下面我們以NORTHWND.MDF數據庫中自帶的幾個存儲過程來理解一下。
1.標量返回
在數據庫中,有名為Customers Count By Region的存儲過程。該Linq存儲過程返回顧客所在"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);
語句描述:這個實例使用Linq存儲過程返回在“WA”地區的客戶數。
2.單一結果集
從數據庫中返回行集合,并包含用于篩選結果的輸入參數。 當我們執行返回行集合的存儲過程時,會用到結果類,它存儲從存儲過程中返回的結果。
下面的示例表示一個存儲過程,該Linq存儲過程返回客戶行并使用輸入參數來僅返回將“London”列為客戶城市的那些行的固定幾列。
ALTER PROCEDURE [dbo].[Customers By City] -- Add the parameters for the stored procedure here (@param1 NVARCHAR(20)) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; SELECT CustomerID, ContactName, CompanyName, City from Customers as c where c.City=@param1 END
拖到O/R設計器內,它自動生成了以下代碼段:
[Function(Name="dbo.[Customers By City]")] public ISingleResult<Customers_By_CityResult> Customers_By_City( [Parameter(DbType="NVarChar(20)")] string param1) { IExecuteResult result = this.ExecuteMethodCall(this, ( (MethodInfo)(MethodInfo.GetCurrentMethod())), param1); return ((ISingleResult<Customers_By_CityResult>) (result.ReturnValue)); }
我們用下面的代碼調用:
ISingleResult<Customers_By_CityResult> result = db.Customers_By_City("London"); foreach (Customers_By_CityResult cust in result) { Console.WriteLine("CustID={0}; City={1}", cust.CustomerID, cust.City); }
語句描述:這個實例使用Linq存儲過程返回在倫敦的客戶的 CustomerID和City。
以上是“如何解決Linq存儲過程返回問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。