Use as seguintes etapas para resolver esse problema:
- Você precisa importar o procedimento armazenado como uma função. Clique com o botão direito do mouse na área de trabalho do seu modelo de entidade e escolha
Add -> Function Import
. - Na caixa de diálogo Adicionar importação de função, insira o nome que você deseja que seu procedimento armazenado seja referido em seu modelo, por exemplo,
Search_Products
, escolha seu procedimento na lista suspensa e escolha o valor de retorno do procedimento comoEntities
e escolhaProducts
na lista suspensa. -
Então no código por trás:
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();
O motivo pelo qual você recebe
-1
para resultado é que o Entity Framework não pode oferecer suporte a valores de retorno de procedimento armazenado pronto para uso. Acho que o suporte de valores de retorno de procedimento armazenado depende da versão do Entity Framework. Além disso, o Entity Framework não possui suporte avançado a procedimentos armazenados porque é um ORM, não uma substituição do SQL.