使用實體框架從儲存過程中擷取資料
在Web 開發領域,經常需要在應用程式中填充資料集來自資料來源。這就是實體框架發揮作用的地方,它提供了一個物件導向的介面來與資料庫互動。但是,從預存程序檢索資料時,可能會遇到某些挑戰。
考慮SQL Server 中的以下預存程序:
ALTER PROCEDURE dbo.SearchProducts @SearchTerm VARCHAR(max) AS BEGIN DECLARE @query VARCHAR(max) SET @query = 'SELECT * FROM dbo.Products WHERE Name LIKE ''%' + @SearchTerm + '%''' EXEC(@query) END
嘗試從此檢索資料使用Entity Framework 6.1.1 預存程序並填入GridView 控制項,以下C# 程式碼可能是使用:
var db = new MyEntities(); var TEST_SEARCH_TERM = "product"; var result = db.SearchProducts(TEST_SEARCH_TERM); MyGridView.DataSource = result; MyGridView.DataBind();
但是,在ASP.NET應用程式中執行程式碼時,會發生異常,結果變數會傳回 -1 而不是所需的 IEnumerable 資料集。要解決此問題並成功檢索數據,應遵循以下步驟:
將預存程序作為函數導入:
設定函數導入:
修改程式碼後面:
var db = new MyEntities(); var TEST_SEARCH_TERM = "product"; var result = db.Search_Products(TEST_SEARCH_TERM); // Replace "SearchProducts" with your chosen function name MyGridView.DataSource = result; MyGridView.DataBind();
此方法透過匯入儲存的過程作為實體框架模型中的函數,允許存取和執行它,並將返回值設為IEnumerable資料集。
需要注意的是,雖然實體框架提供了一種方便的與資料庫互動的機制,但它對預存程序的支援是有限的,並且無法原生處理預存程序的回傳值。
以上是如何在 ASP.NET 中使用實體框架成功從預存程序中檢索資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!