Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Obtendo dados do procedimento armazenado com o Entity Framework


Use as seguintes etapas para resolver esse problema:
  1. 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 .
  2. 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 como Entities e escolha Products na lista suspensa.

  3. 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.