Partager via


Procédure : exécuter une requête qui retourne des résultats PrimitiveType (EntityClient)

Cette rubrique montre comment exécuter une commande par rapport à un modèle conceptuel en utilisant un objet EntityCommand et comment récupérer les résultats PrimitiveType en utilisant un objet EntityDataReader.

Pour exécuter le code de cet exemple

  1. Ajoutez le Modèle de vente AdventureWorks Sales Model à votre projet et configurez votre projet pour utiliser Entity Framework . Pour plus d'informations, consultez Procédure : utiliser l'Assistant Entity Data Model (Entity Framework).

  2. 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.IO
    Imports System.Data.SqlClient
    Imports System.Data.EntityClient
    Imports System.Data.Metadata.Edm
    
    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 System.Data.Metadata.Edm;
    

Exemple

Cet exemple exécute une requête qui retourne des résultats PrimitiveType. Si vous transmettez la requête suivante en tant qu'argument à la fonction ExecutePrimitiveTypeQuery, celle-ci affiche le tarif moyen de tous les produits (Products) :

SELECT VALUE AVG(p.ListPrice) FROM AdventureWorksEntities.Products as p 

Si vous transmettez une requête paramétrable, telle que la suivante, ajoutez les objets EntityParameter à la propriété Parameters sur l'objet EntityCommand.

CASE WHEN AVG({@score1,@score2,@score3}) < @total THEN TRUE ELSE FALSE END
Private Shared Sub ExecutePrimitiveTypeQuery(ByVal esqlQuery As String)
    If esqlQuery.Length = 0 Then
        Console.WriteLine("The query string is empty.")
        Exit Sub
    End If

    Using conn As New EntityConnection("name=AdventureWorksEntities")
        conn.Open()

        ' Create an EntityCommand. 
        Using cmd As EntityCommand = conn.CreateCommand()
            cmd.CommandText = esqlQuery
            ' Execute the command. 
            Using rdr As EntityDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
                ' Start reading results. 
                While rdr.Read()
                    Dim record As IExtendedDataRecord = TryCast(rdr, IExtendedDataRecord)
                    ' For PrimitiveType 
                    ' the record contains exactly one field. 
                    Dim fieldIndex As Integer = 0
                    Console.WriteLine("Value: " & record.GetValue(fieldIndex))
                End While
            End Using
        End Using
        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();

        // 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));
                }
            }
        }
        conn.Close();
    }
}

Voir aussi

Concepts

Référence Entity SQL
Fournisseur EntityClient pour Entity Framework