この問題を解決するには、次の手順を使用します。
- ストアドプロシージャを関数としてインポートする必要があります。エンティティモデルのワークスペース領域を右クリックし、
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であるため、豊富なストアドプロシージャをサポートしていません。