ホームページ >バックエンド開発 >C++ >空のデータセットを取得せずにEntity Frameworkを使用してストアド プロシージャからデータを取得する方法

空のデータセットを取得せずにEntity Frameworkを使用してストアド プロシージャからデータを取得する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-03 10:25:41220ブラウズ

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

Entity Framework を使用したスト​​アド プロシージャからのデータの取得

問題:
開発者が Entity Framework を使用するときにストアド プロシージャからデータを取得する際に問題が発生する(EF)、予想される代わりに空のデータセット (-1) が生成されます。 data.

ストアド プロシージャ:

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" に設定し、エンティティ タイプとして「Products」を選択します。
  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();

インポートによりストアド プロシージャを関数として使用すると、Entity Framework はストアド プロシージャからデータを適切に取得して返すことができます。

以上が空のデータセットを取得せずにEntity Frameworkを使用してストアド プロシージャからデータを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。