Procedura: eseguire una query con parametri (Entity Framework)
In questo argomento viene illustrato come eseguire una query Entity SQL con parametri utilizzando ObjectQuery. Nell'esempio vengono passati due parametri a ObjectQuery, viene eseguita la query e viene scorso l'insieme di elementi Contact
. Lo stesso esempio viene illustrato utilizzando ognuna delle tecnologie di query Entity Framework seguenti:
Entity SQL con ObjectQuery<T>
Metodi del generatore di query di ObjectQuery<T>
L'esempio incluso in questo argomento è basato sul modello descritto in Modello Sales di AdventureWorks (EDM). Per eseguire il codice incluso in questo esempio, è necessario avere già aggiunto il modello Sales di AdventureWorks al progetto e avere configurato il progetto per l'utilizzo di Entity Framework. A tale scopo, completare le procedure descritte in Procedura: configurare manualmente un progetto di Entity Framework e Procedura: definire manualmente un modello EDM (Entity Framework). È inoltre possibile utilizzare la procedura guidata Entity Data Model per definire il modello Sales di AdventureWorks. Per ulteriori informazioni, vedere Procedura: utilizzare la procedura guidata Entity Data Model (Entity Framework).
Esempio
Di seguito viene fornito un esempio di utilizzo di Entity SQL.
Using advWorksContext As New AdventureWorksEntities
Try
' Create a query that takes two parameters.
Dim queryString As String = "SELECT VALUE Contact FROM AdventureWorksEntities.Contact " & _
"AS Contact WHERE Contact.LastName = @ln AND " & _
"Contact.FirstName = @fn"
' Add parameters to the collection.
Dim contactQuery As New ObjectQuery(Of Contact)(queryString, advWorksContext, MergeOption.NoTracking)
contactQuery.Parameters.Add(New ObjectParameter("ln", "Adams"))
contactQuery.Parameters.Add(New ObjectParameter("fn", "Frances"))
' Iterate through the collection of Contact items.
For Each result As Contact In contactQuery
Console.WriteLine("Last Name: {0} First Name: {1}", _
result.LastName, result.FirstName)
Next
Catch ex As EntityException
Console.WriteLine(ex.ToString)
Catch ex As InvalidOperationException
Console.WriteLine(ex.ToString())
End Try
End Using
using (AdventureWorksEntities advWorksContext =
new AdventureWorksEntities())
{
try
{
// Create a query that takes two parameters.
string queryString =
@"SELECT VALUE Contact FROM AdventureWorksEntities.Contact
AS Contact WHERE Contact.LastName = @ln AND
Contact.FirstName = @fn";
ObjectQuery<Contact> contactQuery =
new ObjectQuery<Contact>(queryString, advWorksContext);
// Add parameters to the collection.
contactQuery.Parameters.Add(new ObjectParameter("ln", "Adams"));
contactQuery.Parameters.Add(new ObjectParameter("fn", "Frances"));
// Iterate through the collection of Contact items.
foreach (Contact result in contactQuery)
Console.WriteLine("Last Name: {0}; First Name: {1}",
result.LastName, result.FirstName);
}
catch (EntityException ex)
{
Console.WriteLine(ex.ToString());
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.ToString());
}
}
Di seguito viene fornito un esempio del metodo del generatore di query.
Dim firstName As String = "Frances"
Dim lastName As String = "Adams"
Using context As New AdventureWorksEntities
Try
' Get the contacts with the specified name.
Dim contactQuery As ObjectQuery(Of Contact) = _
context.Contact _
.Where("it.LastName = @ln AND it.FirstName = @fn", _
New ObjectParameter("ln", lastName), _
New ObjectParameter("fn", firstName))
' Iterate through the collection of Contact items.
For Each result As Contact In contactQuery
Console.WriteLine("Last Name:{0}First Name: {1}", _
result.LastName, result.FirstName)
Next
Catch ex As EntitySqlException
Console.WriteLine(ex.ToString())
End Try
End Using
string firstName = @"Frances";
string lastName = @"Adams";
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
try
{
// Get the contacts with the specified name.
ObjectQuery<Contact> contactQuery = context.Contact
.Where("it.LastName = @ln AND it.FirstName = @fn",
new ObjectParameter("ln", lastName),
new ObjectParameter("fn", firstName));
// Iterate through the collection of Contact items.
foreach (Contact result in contactQuery)
Console.WriteLine("Last Name: {0}; First Name: {1}",
result.LastName, result.FirstName);
}
catch (EntitySqlException ex)
{
Console.WriteLine(ex.ToString());
}
}
Vedere anche
Attività
Procedura: eseguire una query che restituisce un tipo di entità (Entity Framework)
Procedura: eseguire una query che restituisce un tipo anonimo (Entity Framework)
Procedura: eseguire una query che restituisce un tipo primitivo (Entity Framework)
Concetti
Altre risorse
Esecuzione di query su Entity Data Model (attività di Entity Framework)