In questo articolo vedremo come in
Entity Framework (versione 6 ) possiamo utilizzare
istruzioni SQL per estrapolare i dati da una fonte dati.
Il linguaggio utilizzato è VB.Net e C#, utilizzando il database Sql Server 2014.
Prima di tutto bisogna creare una tabella denominata “Anagrafica” con tre campi (ID, Nome e Cognome).
Valorizzare la tabella con i valori di vostro piacimento.
A questo punto terminata la creazione della base dati valorizzando la tabella con i dati, non ci resta che aprire l'ambiente di sviluppo Visual Studio.
Stesura del codice
A questo punto si crea un progetto di test, in particolare un progetto di tipo “Windows Application”, nel linguaggio di vostro interesse, ultimata la creazione del progetto, inserite un controllo di tipo DatagridView, che servirà a visualizzare i dati, ed un pulsante, il quale permetterà di estrapolare i dati.
Passiamo in visualizzazione codice, ed inseriamo gli spazi di nomi che ci permetteranno di utilizzare alcune classi.
Qui di seguito la dichiarazione per il linguaggio VB.Net e C#
VB.Net
Imports System.Data
Imports System.Data.Entity.Core.Objects
Imports System.Data.Common
C#
using System.Data;
using System.Data.Common;
using System.Data.Entity.Core.Objects;
Ora nell’evento click del pulsante scriviamo il codice per eseguire istruzione SQL che restituire una serie di oggetti di tipo “Anagrafica” che è la nostra tabella.
VB.Net
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using Contesto As New ObjectContext("name=DatiEntities")
Dim sql As String = "SELECT VALUE Anagrafica FROM DatiEntities.Anagrafica as Anagrafica"
Dim query As New ObjectQuery(Of Anagrafica)(sql, Contesto)
DataGridView1.DataSource = query
End Using
End Sub
C#
private void button1_Click(object sender, EventArgs e)
{
using (ObjectContext Contesto = new ObjectContext("name=DatiEntities"))
{
string Sql = "SELECT VALUE Anagrafica FROM DatiEntities.Anagrafica as Anagrafica";
ObjectQuery<Anagrafica> query = new ObjectQuery<Anagrafica>(Sql, Contesto);
dataGridView1.DataSource = query;
}
}
Come si vede dal frammento del codice precedente, si crea un oggetto di tipo ObjectContext , e tramite l’oggetto di tipo “ObjectQuery” si ottiene una serie di oggetti che corrispondono ai vari record di tipo “Anagrafica” che fanno riferimento alla tabella creata in precedenza, il tutto passando come parametri istruzioni di tipo “SQL” e l’oggetto contesto.
Si è utilizzato la parola chiave “Value” per far riferimenti ai vari campi della tabella.
Il risultato sarà visibile nel controllo DatagridView.
L’esempio qui di seguito invece illustra una tecnica di come utilizzare un parametro.
VB.Net
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using Contesto As New ObjectContext("name=DatiEntities")
Dim sql As String = "SELECT VALUE Anagrafica FROM DatiEntities.Anagrafica as Anagrafica where Anagrafica.Cognome = @Param1 "
Dim query As New ObjectQuery(Of Anagrafica)(sql, Contesto)
query.Parameters.Add(New ObjectParameter("Param1", "a"))
DataGridView1.DataSource = query
End Using
End Sub
C#
private void button1_Click(object sender, EventArgs e)
{
using (ObjectContext Contesto = new ObjectContext("name=DatiEntities"))
{
string Sql = "SELECT VALUE Anagrafica FROM DatiEntities.Anagrafica as Anagrafica Where Anagrafica.Cognome = @Param1 ";
ObjectQuery<Anagrafica> query = new ObjectQuery<Anagrafica>(Sql, Contesto);
query.Parameters.Add(new ObjectParameter("Param1", "a"));
dataGridView1.DataSource = query;
}
}
Se invece dobbiamo eseguire una query e non sappiamo che tipo di oggetto sarà (se tabella Anagrafica o altro) possiamo utilizzare la tecnica dei tipi anonimi, utilizzando oggetto di tipo DbDataRecord, ci permette di gestire le informazioni senza conoscere il tipo di dato.
Qui di seguito viene illustrata una tecnica di come estrapolare dei dati senza conoscere il tipo di oggetto che viene restituito come invece avveniva nel frammento di codice precedente in cui era indicato il tipo di risultato (tabella Anagrafica).
VB.Net
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using Contesto As New ObjectContext("name=DatiEntities")
Dim sql As String = "SELECT Anagrafica.Cognome FROM DatiEntities.Anagrafica as Anagrafica "
Dim query As New ObjectQuery(Of DbDataRecord)(sql, Contesto)
DataGridView1.DataSource = query
End Using
End Sub
C#
private void button1_Click(object sender, EventArgs e)
{
using (ObjectContext Contesto = new ObjectContext("name=DatiEntities"))
{
string Sql = "SELECT Anagrafica.Cognome FROM DatiEntities.Anagrafica as Anagrafica ";
ObjectQuery<DbDataRecord> query = new ObjectQuery<DbDataRecord>(Sql, Contesto);
dataGridView1.DataSource = query;
}
}
Conclusioni
In questo articolo abbiamo visto come utilizzare istruzioni SQL per estrapolare dati, le varie tecniche utilizzate in questo articolo permettono di estrapolare dati in vari modi.
Entity Framework è una tecnologia molto potente e flessibile che offre allo sviluppatore un vero strumento per migliorare la stesura di codice e la gestione dei dati. La tecnica appena vista offre anche la possibilità di estrapolare i dati in forma più veloce.