Aby rozwiązać ten problem, wykonaj następujące czynności:
- Musisz zaimportować procedurę składowaną jako funkcję. Kliknij prawym przyciskiem myszy obszar roboczy swojego modelu Entity i wybierz
Add -> Function Import
. - W oknie dialogowym Dodaj funkcję importu wprowadź nazwę, do której ma odnosić się procedura składowana w modelu, na przykład
Search_Products
, wybierz swoją procedurę z listy rozwijanej i wybierz wartość zwracaną procedury jakoEntities
i wybierzProducts
z listy rozwijanej. -
Następnie w kodzie za:
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();
Powód, dla którego otrzymujesz -1
wynik jest taki, że Entity Framework nie może obsługiwać wartości zwracanych przez procedurę składowaną po wyjęciu z pudełka. Myślę, że obsługa wartości zwracanych przez procedurę składowaną zależy od wersji frameworka Entity. Ponadto Entity Framework nie obsługuje rozbudowanej obsługi procedur składowanych, ponieważ jest to ORM, a nie zamiennik SQL.