Entity Framework utilizzo di Store procedure

L'articolo fornisce le basi per utilizzare una stored procedure in Entity Framework.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

Introduzione

In questo articolo, vedremo come utilizzare le stored procedure di Sql server in Entity Framework.
L'esempio qui proposto fornisce al lettore le basi per comprendere l'utilizzo dei nuovi strumenti e tecnologie per l'accesso ai dati, offerti dal Framework .Net  4.0.

Creazione della Stored Procedure

Dopo aver creato una tabella con diverse colonne, si crea una stored procedure che esegue una normalissima select su tale tabella.
Qui di seguito si riporta lo script di creazione di una semplice Stored Procedure, che legge tutti i dati di una tabella.

CREATE PROCEDURE Sp_CaricaDati
AS
BEGIN
 
 SET NOCOUNT ON;
 
 Select * from anagrafica
END
GO

Creazione del progetto

Terminata la parte della creazione della SP passiamo alla creazione del nostro applicativo.
Apriamo Visual Studio 2010, e si crea un nuovo progetto web.
Nel progetto, dobbiamo aggiungere un “Ado.Net Entity Data Model”, per far ciò, dalla finestra esplora soluzione, facciamo click con il tasto destro sul nome del progetto ed aggiungiamo nuovo elemento, selezioniamo la categoria Data ed il modello “Ado.Net Entity Data Model” il tutto come mostrato in figura 1.






Figura 1


Lasciamo  di default il nome che viene assegnato “Model1.edmx”, e facciamo click sul pulsante “Add”.
Nella finestra successiva (figura 2)  lasciamo valorizzato l’opzione “Generate From database”, il tutto come mostrato in figura 2.




Figura 2


Facciamo click sul pulsante next e continuiamo con le finestre che ci propone il wizard.




Figura 3


La finestra successiva (figura 3) ci chiede una connessione al nostro databse, il riferimento al database o meglio la connection string, viene salvata (se lasciamo la spunta sull'opzione) sl file web config.
Impostate i dati, e fate click  sul pulsante next.
Nella finestra successiva (figura 4) , ci viene fornito un riepilogo delle tabelle, viste e stored procedure, del nostro database.
Selezionate la categorie “Stored Procedures” , e tra le varie Stored Procedure, selezionate quella creata in precedenza, ossia “Sp_CaricaDati” il tutto come mostrato in figura 4.



Figura 4

La casella relativa a “Model Namespace” viene impostato lo spazio dei nomi, di questo modello oggetti, che utilizzeremo per eseguire le operazioni sui dati.
Facciamo click sul pulsante “Finish”.

Nel nostro progetto, verrà creato un file di tipo “edmx” il quale, contiene le informazioni del nostro database e le tabelle, viste e Stored procedure che abbiamo selezionato o che andremo ad inserire successivamente.
Fate doppio click sul file “model.edmx” e nella finestra “model browser” selezionate la Stored procedure caricata in precedenza, il tutto come mostrato in figura 5




Figura 5.

Fate click con il tasto destro sopra a tale voce.
E selezionate la voce “Add Function import…” nella finestra che viene aperta (figura 6) viene riportata la Stored procedure, con un nome alla funzione (che possiamo lasciare quella).
A questo punto fate click sul pulsante “Get Colum information” ed al termine della visualizzazione delle colonne, fate click sul pulsante “Create new complex type” in modo che viene valorizzata l’opzione “complex” che avrà un oggetto riguardante la gestione dei dati. Il tutto come mostrato in figura 6.


Figura 6


Confermate il tutto tramite il pulsante “ok”.
Compilate il progetto o la soluzione, per rendere effettive le modifiche e verificare che non ci siano errori.
A questo punto andate nel pagina, nell’evento load, e dopo aver inserito un controllo grid view, si invochi la funzione appena creata.
Il tutto come mostrato nel seguente esempio di codice.

Vb.Net
Using contesto As New testEntities
            GridView1.DataSource = contesto.Sp_CaricaDati()
            GridView1.DataBind()
        End Using
C#
protected void Page_Load(object sender, EventArgs e)
        {
            using (testEntities contesto = new testEntities())
            {
                GridView1.DataSource = contesto.Sp_CaricaDati();
                GridView1.DataBind();
            }          
        }

Conclusioni

L'articolo ha voluto fornire le base pratiche sull'utilizzo di una semplice stored procedure per il caricamento dei dati in un controllo gridview. Le tecniche di utilizzo delle Stored Procedure, nella maggior parte dei casi, permettono un miglioramento prestazionale delle applicazioni. Questa tecnica, ha permesso di scrivere pochissimo codice.