mercoledì 13 maggio 2020

.Net utilizzare Stored Procedure in Entity Framework

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/microsoft-net-framework/art_vbnet-e-c-utilizzare-stored-procedure-in-entity-framework_1667.aspx

In questo nuovo articolo vedremo come utilizzare in Entity Framework di .Net 4.7 per il linguaggio di programmazione Visual Basic Net e C# le Stored Procedure di Microsoft Sql Server.
Vedremo come tramite una semplice applicazioni Windows, ma la prassi si può utilizzare anche in ambiente Web, viene eseguita una stored Procedure tramite Entity Framework.


Creazione della stored produce e progetto


Prima di creare il progetto in ambiente Windows Application, occorre aprire Microsoft Sql Server per la creazione di una stored procedure, questa verrà utilizzata per estrapolare i dati presenti in una tabella denominata “Anagrafica”.
Si crea una tabella con un campo chiave di tipo intero contatore denominato ID, un campo denominato “Nome” di tipo “Varchar50” ed un campo denominato “Cognome” di tipo “Varchar(50)”, il tutto come mostrato in figura 1.




Figura 1 – La tabella Anagrafica

Dopo aver creato la tabella anagrafica dovremmo creare la Stored Procedure, che verrà richiamata da EntityFramework nel nostro progetto.
Andiamo alla voce “Programmabilità” e selezioniamo dal menu di scelta rapida (tasto destro) “Stored Procedure”

Qui di seguito il frammento SQL della Stored Procedure.



SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

 

CREATE PROCEDURE GetDati

       AS

BEGIN

 

       SET NOCOUNT ON;

 

       SELECT * from Anagrafica

END

GO

Ora inseriamo qualche dato nella tabella almeno 5 e più record in modo da popolarla con i dei dati che saranno visualizzati nella nostra applicazione.
Per verificare la correttezza della nostra Stored Procedure, possiamo verificare in due modi, o tramite istruzione SQL oppure tramite il management di Microsoft Sql Server.
In quest’ultimo caso, andiamo sul nome della Stored Procedure appena creata e tramite il tasto destro, selezionare dal menu che viene visualizzato la voce “Esegui Stored Procedure…” al quale click si aprirà una finestra, facciamo click sul pulsante “Ok” e se tutto è scritto bene saranno visualizzati i record.
Tramite istruzione SQL possiamo eseguire anche la stored procedure, qui di seguito il codice che genera anche il tools Management di “Microsoft Sql Server”.



GO

 

DECLARE      @return_value int

 

EXEC   @return_value = [dbo].[GetDati]

 

SELECT 'Return Value' = @return_value

 

GO

Ora non ci resta che aprire l’ambiente Visual Studio e scrivere il codice.
Apriamo Visual Studio e si crea un nuovo progetto di tipo “Windows Application”, si ricorda che tale codice si può applicare anche per applicazioni web.
Inseriamo nella nostra form un controllo di tipo “DatagridView” impostato la proprietà “Name” con il valore “DtgDati” e posizionandolo in alto, il tutto come mostrato in figura 2.



Figura 2 – La nostra form

Aggiunta di Entity Framework e stesura del codice

Ora aggiungiamo nel nostro progetto Entity Framework con il quale andremo a visualizzare i dati nella griglia estrapolandoli tramite la Stored Procedure creata in precedenza.
In esplora soluzioni, facciamo click con il tasto destro, e dal menu che viene visualizzato facciamo click sulla voce “Aggiungi” e dal sotto menu “Nuovo Elemento…” nella finestra che viene visualizzata facciamo click sulla categoria “Data” e tra i modelli proposti al centro selezioniamo il modello “Ado.Net Entity Framework Model” impostando un nome nella casella in basso del tipo “ModelDati”.
Dopo aver confermato il tutto con il click, nella prima schermata (“figura 3”) selezioniamo il modello con la dicitura “Entity Framework Designer da Database” e facciamo click sul pulsante “Avanti”.


Figura 3 – La finestra della creazione guidata

Dopo aver fatto click sul pulsante “Avanti “ viene proposta la connessione al database, nel caso che manca (figura 4) viene proposta una finestra vuota.

Figura 4 – La configurazione della connessione al database.

A questo punto dobbiamo fare click sul pulsante “Nuova connessione…” per impostare un collegamento al database nel quale abbiamo la tabella e la Stored Procedure. Nella finestra che viene aperta (figura 5) dobbiamo selezionare come origine Dati, Microsoft Sql Server, al quale verrà applicato un determinato provider.


Figura 5 – Il provider da impostare

Facciamo click sul pulsante “Continua” e nella finestra che viene aperta (figura 6) impostiamo il nome del server, nel caso che non si conosce, si può vedere dal management di Microsoft Sql Server e copiarlo nella casella del nome server. A questo punto nella parte inferiore, impostare il nome del database.



Figura 6 – La finestra delle impostazioni del database.

Facciamo click sul pulsante “Test connessione” in modo di verificare se la connessione al fonte dati è corretta, a questo punto facciamo click sul pulsante “OK”.
Avremo la finestra della connessione al database impostato con tutti i riferimenti, il tutto come mostrato in figura 7.


Figura 7 – La finestra con le impostazioni.

Ora non ci resta che fare click sul pulsante “Avanti” in modo che la creazione guidata ci inserisce nel progetto le informazioni utili relative alla gestione dei dati.
Selezionare la versione 6.x in modo che si hanno le ultime funzionalità, il tutto come mostrato in figura 8.


Figura 8 – La selezione della versione di Entity Framework.

Dopo aver selezionato la prima opzione, quella relativa alla versione 6.x facciamo click sul pulsante “Avanti” e nella finestra successiva, selezioniamo la tabella e stored preocedure, di nostro interesse, come illustrato in figura 9.



Figura 9 – La selezione di oggetti

A questo punto confermiamo il tutto con il pulsante “Fine”.
Noteremo come nel nostro progetto è stato aggiunto un oggetto riguardante Entity Framework con il quale andremo a gestire i dati.
Nella form dove si trova il controllo “DatagridView” facciamo click sulla form, in modo che passiamo in visualizzazione codice nell’evento load della form stessa.

Si riporta il frammento di codice per entrambi i linguaggi relativo al caricamento dei dati nella griglia nell’evento load.




VB.Net

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Dim entita As New ProvaEntities

        Dim risultato = (From Dati In entita.GetDati() Select Dati).ToList()

        DtgDati.DataSource = risultato

    End Sub

 

C#

private void Form1_Load(object sender, EventArgs e)

        {

            ProvaEntities entita = new ProvaEntities();

 

            var risultato = (from Dati in entita.GetDati() select Dati).ToList();

            DtgDati.DataSource = risultato;

           

        }






Come si nota nel codice precedente, si crea un oggetto di tipo entity che è il riferimento alla gestione dei dati del nostro database, successivamente tramite la funzione “GetDati” che è il nome della nostra Procedure, vengono estrapolati i dati.


Conclusioni

L’utilizzo di Stored Procedure è molto importante soprattutto in quei contesti dove sono richieste particolare attenzione alle prestazioni visto che con l’utilizzo delle Stored Procedure si migliorano di tanto le performance sulla gestione dei dati.
L’articolo riguarda un progetto realizzato in ambiente Windows application, ma la stessa tecnica è utilizzabile  anche in ambiente web.
Inoltre l’uso delle Stored Procedure è utile anche in ambito di manutenzione.
L’articolo ha voluto fornire le basi  sull’utilizzo delle Stored Procedure.

Nessun commento: