Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ottenere dati da stored procedure con Entity Framework

Utilizzare i seguenti passaggi per risolvere questo problema:

  1. È necessario importare la procedura memorizzata come funzione. Fai clic con il pulsante destro del mouse sull'area di lavoro del tuo modello di entità e scegli Add -> Function Import .
  2. Nella finestra di dialogo Aggiungi importazione funzione, inserisci il nome a cui vuoi fare riferimento alla procedura memorizzata nel tuo modello, ad esempio Search_Products , scegli la tua procedura dall'elenco a discesa e scegli il valore di ritorno della procedura da Entities e scegli Products dall'elenco a discesa.
  3. Quindi nel codice dietro:

    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();
    

Il motivo per cui ottieni -1 per il risultato è che Entity Framework non può supportare i valori di stored procedure restituiti immediatamente. Penso che il supporto dei valori restituiti dalla procedura memorizzata dipenda dalla versione di Entity Framework. Inoltre, Entity Framework non ha il supporto per la stored procedure avanzata perché è un ORM, non una sostituzione SQL.