Procedura: eseguire una query Entity SQL con parametri utilizzando EntityCommand (EntityClient)
In questo argomento viene fornito un esempio di esecuzione di una query Entity SQL con parametri tramite EntityCommand.
Per eseguire il codice in questo esempio
Aggiungere il modello Sales di Adventure Works al progetto e configurare il progetto per l'utilizzo di Entity Framework. A tale scopo, effettuare una delle operazioni seguenti:
Se gli strumenti EDM (Entity Dati Model) sono stati installati, completare la procedura descritta in Procedura: utilizzare la procedura guidata Entity Data Model (Entity Framework).
In caso contrario, completare le procedure descritte in Procedura: configurare manualmente un progetto di Entity Framework e in Procedura: definire manualmente un modello EDM (Entity Framework).
Nella tabella codici per l'applicazione aggiungere le istruzioni using seguenti (Imports in Visual Basic):
Imports System Imports System.Collections.Generic Imports System.Collections Imports System.Data.Common Imports System.Data Imports System.Data.SqlClient Imports System.Data.EntityClient Imports System.Data.Metadata.Edm Imports System.IO ' Add AdventureWorksModel prepended with the root namespace for the project. 'Imports ProjectName.AdventureWorksModel
using System; using System.Collections.Generic; using System.Collections; using System.Data.Common; using System.Data; using System.IO; using System.Data.SqlClient; using System.Data.EntityClient; using AdventureWorksModel; using System.Data.Metadata.Edm;
Esempio
Nell'esempio seguente viene illustrato come costruire una stringa di query con due parametri. Viene quindi creato un oggetto EntityCommand, vengono aggiunti due parametri all'insieme EntityParameter di EntityCommand e viene scorso l'insieme di elementi Contact
.
Using conn As EntityConnection = New EntityConnection("name=AdventureWorksEntities")
conn.Open()
' Create a query that takes two parameters.
Dim esqlQuery As String = "SELECT VALUE Contact FROM AdventureWorksEntities.Contact " & _
"AS Contact WHERE Contact.LastName = @ln AND " & _
"Contact.FirstName = @fn"
Try
Using cmd As EntityCommand = New EntityCommand(esqlQuery, conn)
' Create two parameters and add them to
' the EntityCommand's Parameters collection
Dim param1 As New EntityParameter
param1.ParameterName = "ln"
param1.Value = "Adams"
Dim param2 As New EntityParameter
param2.ParameterName = "fn"
param2.Value = "Frances"
cmd.Parameters.Add(param1)
cmd.Parameters.Add(param2)
Using rdr As DbDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
' Iterate through the collection of Contact items.
Do While rdr.Read
Console.WriteLine(rdr.Item("FirstName"))
Console.WriteLine(rdr.Item("LastName"))
Loop
End Using
End Using
Catch ex As EntityException
Console.WriteLine(ex.ToString())
End Try
conn.Close()
End Using
using (EntityConnection conn =
new EntityConnection("name=AdventureWorksEntities"))
{
conn.Open();
// Create a query that takes two parameters.
string esqlQuery =
@"SELECT VALUE Contact FROM AdventureWorksEntities.Contact
AS Contact WHERE Contact.LastName = @ln AND
Contact.FirstName = @fn";
try
{
using (EntityCommand cmd = new EntityCommand(esqlQuery, conn))
{
// Create two parameters and add them to
// the EntityCommand's Parameters collection
EntityParameter param1 = new EntityParameter();
param1.ParameterName = "ln";
param1.Value = "Adams";
EntityParameter param2 = new EntityParameter();
param2.ParameterName = "fn";
param2.Value = "Frances";
cmd.Parameters.Add(param1);
cmd.Parameters.Add(param2);
using (DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
// Iterate through the collection of Contact items.
while (rdr.Read())
{
Console.WriteLine(rdr["FirstName"]);
Console.WriteLine(rdr["LastName"]);
}
}
}
}
catch (EntityException ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
}
Vedere anche
Attività
Procedura: eseguire una query con parametri (Entity Framework)