この問題を解決するには、次の手順を使用します。
- ストアドプロシージャを関数としてインポートする必要があります。エンティティモデルのワークスペース領域を右クリックし、
Add -> Function Import
を選択します。 。 - [関数のインポートの追加]ダイアログで、モデルでストアドプロシージャを参照する名前を入力します(例:
Search_Products
)。 、ドロップダウンリストからプロシージャを選択し、プロシージャの戻り値をEntities
として選択します。Products
を選択します ドロップダウンリストから。 -
次に、コードビハインドで:
var db = new MyEntities(); var TEST_SEARCH_TERM = "product"; var result = db.Search_Products(TEST_SEARCH_TERM);//Search_Products is the name that you specified in Function Import dialog MyGridView.DataSource = result; MyGridView.DataBind();
-1
を取得する理由 結果として、EntityFrameworkはそのままではストアドプロシージャの戻り値をサポートできません。ストアドプロシージャの戻り値のサポートは、EntityFrameworkのバージョンによって異なると思います。また、Entity Frameworkは、SQLの代替ではなく、ORMであるため、豊富なストアドプロシージャをサポートしていません。