首頁 > 後端開發 > C++ > 如何在 ASP.NET 中使用實體框架成功從預存程序中檢索資料?

如何在 ASP.NET 中使用實體框架成功從預存程序中檢索資料?

DDD
發布: 2024-12-29 00:10:10
原創
470 人瀏覽過

How Can I Successfully Retrieve Data from a Stored Procedure Using Entity Framework in ASP.NET?

使用實體框架從儲存過程中擷取資料

在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 資料集。要解決此問題並成功檢索數據,應遵循以下步驟:

  1. 將預存程序作為函數導入:

    • 右鍵單擊實體模型的工作區並選擇「新增」-> 「函數導入。」
  2. 設定函數導入:

    • 在「新增函數導入」對話方塊中,提供函數的名稱,例如“Search_Products”。
    • 選擇從下拉清單中選擇「SearchProducts」預存程序。
    • 將過程的回傳值設為“Entities”,然後從下拉清單中選擇“Products”。
  3. 修改程式碼後面:

    • 將給定程式碼片段中的程式碼改為:
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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板