首頁 >後端開發 >C++ >如何使用實體框架從預存程序中檢索資料而不取得空資料集?

如何使用實體框架從預存程序中檢索資料而不取得空資料集?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-03 10:25:41239瀏覽

How to Retrieve Data from a Stored Procedure Using Entity Framework Without Getting an Empty Dataset?

使用實體框架從預存程序中擷取資料

問題:
開發人員在使用實體框架時從儲存程序中擷取資料時遇到困難(EF),導致空資料集(-1),而不是預期的資料。

預存程序:

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

C# 程式碼:

var db = new MyEntities();
var TEST_SEARCH_TERM = "product";
var result = db.SearchProducts(TEST_SEARCH_TERM);

MyGridView.DataSource = result;
MyGridView.DataBind();

解決方案🎜>要解決此問題,請依照下列步驟操作步驟:

  1. 將儲存程序匯入為函數:

      右鍵點選實體模型的工作區並選擇「新增」-> 「函數匯入。」
    • 輸入所需的預存程序名稱(例如,Search_Products)並從下拉清單中選擇此程序。
    • 將回傳值設為「Entities」並選擇「產品」作為實體
  2. 更新背後的程式碼:

    • 將現有程式碼替換為以下:

      var db = new MyEntities();
      var TEST_SEARCH_TERM = "product";
      var result = db.Search_Products(TEST_SEARCH_TERM); // Search_Products is the name specified in the Function Import dialog
      
      MyGridView.DataSource = result;
      MyGridView.DataBind();
透過將預存程序作為函數匯入,實體框架可以正確擷取並傳回預存程序中的數據。

以上是如何使用實體框架從預存程序中檢索資料而不取得空資料集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn