Procédure : exécuter une requête qui retourne des résultats PrimitiveType (EntityClient)
Cette rubrique fournit un exemple d'exécution d'une commande sur un modèle EDM (Entity Data Model) en utilisant EntityCommand, et de récupération des résultats PrimitiveType en utilisant EntityDataReader.
Pour exécuter le code de cet exemple
Ajoutez le modèle de vente AdventureWorks Sales Model à votre projet et configurez votre projet de façon à utiliser Entity Framework. Pour ce faire, effectuez l'une des opérations suivantes :
Si les outils Entity Data Model sont installés, exécutez la procédure décrite dans Procédure : utiliser l'Assistant Entity Data Model (Entity Framework).
Sinon, exécutez les procédures décrites dans Procédure : configurer manuellement un projet Entity Framework et Procédure : définir manuellement un modèle EDM (Entity Data Model) (Entity Framework).
Dans la page de codes de votre application, ajoutez les instructions using (Imports en Visual Basic) suivantes :
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;
Exemple
Pour tester le code, passez la requête suivante comme argument à la fonction ExecutePrimitiveTypeQuery
:
"SELECT VALUE AVG(p.ListPrice) FROM AdventureWorksEntities.Product as p"
La requête ci-dessus retourne le résultat PrimitiveType.
Sub ExecutePrimitiveTypeQuery(ByVal esqlQuery As String)
If (esqlQuery.Length = 0) Then
Console.WriteLine("The query string is empty.")
Return
End If
Using conn As EntityConnection = New EntityConnection("name=AdventureWorksEntities")
conn.Open()
Try
' Create an EntityCommand.
Using cmd As EntityCommand = conn.CreateCommand()
cmd.CommandText = esqlQuery
' Execute the command.
Using reader As EntityDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
Do While (reader.Read())
Dim record As IExtendedDataRecord = CType(reader, IExtendedDataRecord)
' For PrimitiveType
' the record contains exactly one field.
Dim fieldIndex As Integer
fieldIndex = 0
Console.WriteLine("Value: " + record.GetValue(fieldIndex))
Loop
End Using
End Using
Catch ex As Exception
Console.WriteLine(ex.ToString())
End Try
conn.Close()
End Using
End Sub
static void ExecutePrimitiveTypeQuery(string esqlQuery)
{
if (esqlQuery.Length == 0)
{
Console.WriteLine("The query string is empty.");
return;
}
using (EntityConnection conn =
new EntityConnection("name=AdventureWorksEntities"))
{
conn.Open();
try
{
// Create an EntityCommand.
using (EntityCommand cmd = conn.CreateCommand())
{
cmd.CommandText = esqlQuery;
// Execute the command.
using (EntityDataReader rdr =
cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
// Start reading results.
while (rdr.Read())
{
IExtendedDataRecord record = rdr as IExtendedDataRecord;
// For PrimitiveType
// the record contains exactly one field.
int fieldIndex = 0;
Console.WriteLine("Value: " + record.GetValue(fieldIndex));
}
}
}
}
catch (EntityException ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
}
}