Entity Framework を使用してストアド プロシージャからデータを取得する
Web 開発の領域では、アプリケーションにデータセットを設定する必要がよくあります。データソースから。ここで Entity Framework が活躍し、データベースと対話するためのオブジェクト指向インターフェイスを提供します。ただし、ストアド プロシージャからデータを取得する場合、特定の課題が発生する可能性があります。
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 アプリケーションでコードを実行すると例外が発生し、結果変数が目的の IEnumerable データセットではなく -1 を返します。この問題に対処し、データを正常に取得するには、次の手順に従う必要があります:
ストアド プロシージャを関数としてインポート:
関数インポートを構成します。
コードを変更する背後:
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();
このメソッドは、保存されているファイルをインポートすることで問題を解決します。プロシージャを Entity Framework モデル内の関数として作成し、戻り値を IEnumerable に設定してアクセスおよび実行できるようにします。 Dataset.
Entity Framework はデータベースと対話するための便利なメカニズムを提供しますが、ストアド プロシージャのサポートは制限されており、ストアド プロシージャの戻り値をネイティブに処理できないことに注意することが重要です。
以上がASP.NET で Entity Framework を使用してストアド プロシージャからデータを正常に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。