溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何解決Linq存儲過程返回問題

發(fā)布時間:2021-12-02 09:16:59 來源:億速云 閱讀:193 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“如何解決Linq存儲過程返回問題”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何解決Linq存儲過程返回問題”這篇文章吧。

存儲過程

在我們編寫程序中,往往需要一些存儲過程,在LINQ to SQL中怎么使用呢?也許比原來的更簡單些。下面我們以NORTHWND.MDF數(shù)據(jù)庫中自帶的幾個存儲過程來理解一下。

1.標(biāo)量返回

在數(shù)據(jù)庫中,有名為Customers Count By Region的存儲過程。該Linq存儲過程返回顧客所在"WA"區(qū)域的數(shù)量。

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設(shè)計器內(nèi),它自動生成了以下代碼段:

[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));  }

我們需要時,直接調(diào)用就可以了,例如:

int count = db.CustomersCountByRegion("WA");  Console.WriteLine(count);

語句描述:這個實例使用Linq存儲過程返回在“WA”地區(qū)的客戶數(shù)。

2.單一結(jié)果集

從數(shù)據(jù)庫中返回行集合,并包含用于篩選結(jié)果的輸入?yún)?shù)。 當(dāng)我們執(zhí)行返回行集合的存儲過程時,會用到結(jié)果類,它存儲從存儲過程中返回的結(jié)果。

下面的示例表示一個存儲過程,該Linq存儲過程返回客戶行并使用輸入?yún)?shù)來僅返回將“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設(shè)計器內(nèi),它自動生成了以下代碼段:

[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));  }

我們用下面的代碼調(diào)用:

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存儲過程返回問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI