Procédure : exécuter une requête qui retourne un type d'entité (Entity Framework)

Cette rubrique fournit des exemples d'exécution d'une requête Entité SQL qui retourne une collection d'instances d'un type d'entité. Elle parcourt ensuite la collection de produits (Products) et affiche le nom et l'ID de chaque produit. Le même exemple est repris en utilisant chacune des technologies de requête Entity Framework suivantes :

  • LINQ to Entities

  • Entity SQL avec ObjectQuery<T>

  • Méthodes du Générateur de requêtes d'ObjectQuery<T>

Les exemples de cette rubrique sont basés sur le modèle de vente Adventure Works. Pour exécuter le code de cet exemple, vous devez déjà avoir ajouté le modèle de vente AdventureWorks à votre projet et configuré ce dernier pour qu'il utilise Entity Framework. Pour ce faire, 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). Vous pouvez également définir le modèle de vente AdventureWorks Sales Model à l'aide de l'Assistant EDM. Pour plus d'informations, voir Procédure : utiliser l'Assistant Entity Data Model (Entity Framework).

Exemple

L'exemple ci-dessous utilise LINQ to Entities.

Using AWEntities As New AdventureWorksEntities
    Dim products As ObjectQuery(Of Product) = AWEntities.Product

    Dim productsQuery = _
        From product In products _
        Select product

    Console.WriteLine("Product Names:")
    For Each product In productsQuery
        Console.WriteLine(product.Name)
    Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
    ObjectQuery<Product> products = AWEntities.Product;
    IQueryable<Product> productsQuery = from product in products
                                        select product;

    Console.WriteLine("Product Names:");
    foreach (var prod in productsQuery)
    {
        Console.WriteLine(prod.Name);
    }
}

L'exemple ci-dessous utilise Entité SQL.

Using advWorksContext As AdventureWorksEntities = New AdventureWorksEntities
    Try
        Dim queryString As String = "SELECT VALUE Product FROM AdventureWorksEntities.Product AS Product"

        Dim query As New ObjectQuery(Of Product)(queryString, advWorksContext, MergeOption.NoTracking)

        ' Iterate through the collection of Product items.
        For Each result As Product In query
            Console.WriteLine("Product Name: {0} Product ID: {1}", _
            result.Name, result.ProductID)
        Next

    Catch exception As EntityException
        Console.WriteLine(exception.ToString)
    Catch ex As InvalidOperationException
        Console.WriteLine(ex.ToString())
    End Try
End Using
using (AdventureWorksEntities advWorksContext =
    new AdventureWorksEntities())
{
    try
    {
        string queryString =
            @"SELECT VALUE Product FROM AdventureWorksEntities.Product AS Product";

        ObjectQuery<Product> productQuery =
            new ObjectQuery<Product>(queryString, advWorksContext, MergeOption.NoTracking);

        // Iterate through the collection of Product items.
        foreach (Product result in productQuery)
            Console.WriteLine("Product Name: {0}; Product ID: {1}",
                result.Name, result.ProductID);
    }
    catch (EntityException ex)
    {
        Console.WriteLine(ex.ToString());
    }
    catch (InvalidOperationException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

L'exemple ci-dessous utilise la méthode du Générateur de requêtes.

Using advWorksContext As AdventureWorksEntities = _
    New AdventureWorksEntities
    Try
        Dim query As ObjectQuery(Of Product) = _
            advWorksContext.Product

        ' Iterate through the collection of Product items.
        For Each result As Product In query
            Console.WriteLine("Product Name:{0}Product ID: {1}", _
            result.Name, result.ProductID)
        Next

    Catch exception As EntitySqlException
        Console.WriteLine(exception.ToString)
    End Try
End Using
using (AdventureWorksEntities advWorksContext =
    new AdventureWorksEntities())
{
    try
    {
        ObjectQuery<Product> productQuery = advWorksContext.Product;

        // Iterate through the collection of Product items.
        foreach (Product result in productQuery)
            Console.WriteLine("Product Name: {0}; Product ID: {1}",
                result.Name, result.ProductID);
    }
    catch (EntitySqlException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Voir aussi

Tâches

Procédure : exécuter une requête qui retourne un type anonyme (Entity Framework)
Procédure : exécuter une requête qui retourne un type primitif (Entity Framework)
Procédure : exécuter une requête paramétrable (Entity Framework)

Autres ressources

Interrogation d'un modèle EDM (Tâches Entity Framework)