Use los siguientes pasos para resolver este problema:
- Debe importar el procedimiento almacenado como una función. Haga clic con el botón derecho en el área del espacio de trabajo de su modelo de Entidad y seleccione
Add -> Function Import
. - En el cuadro de diálogo Agregar función de importación, ingrese el nombre al que desea que se haga referencia a su procedimiento almacenado en su modelo, por ejemplo,
Search_Products
, elija su procedimiento de la lista desplegable y elija el valor de retorno del procedimiento para que seaEntities
y eligeProducts
de la lista desplegable. -
Luego en el código detrá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();
La razón por la que obtienes -1
porque el resultado es que Entity Framework no puede admitir valores de retorno de procedimiento almacenado listos para usar. Creo que la compatibilidad con los valores de retorno de los procedimientos almacenados depende de la versión de Entity Framework. Además, Entity Framework no tiene compatibilidad con procedimientos almacenados enriquecidos porque es un ORM, no un reemplazo de SQL.