Procédure : afficher les commandes de stockage (Entity Framework)

Cette rubrique montre comment utiliser la méthode ToTraceString pour afficher les commandes de stockage d'un objet ObjectQuery dans Entity Framework. La méthode ToTraceString est également disponible sur la classe EntityCommand.

Les exemples de cette rubrique montrent comment afficher les commandes de stockage d'une requête qui retourne des objets Product à partir de la table Production.Product. 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>

L'exemple de cette rubrique est basé sur le modèle de vente Adventure Works Sales Model. Pour exécuter le code de cette rubrique, 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 plus d'informations, consultez Procédure : utiliser l'Assistant EDM (Entity Framework) ou Procédure : configurer manuellement un projet Entity Framework et Procédure : définir manuellement un modèle EDM (Entity Data Model) (Entity Framework).

Exemple

Cet exemple utilise LINQ to Entities .

Dim productID = 900
Using context As New AdventureWorksEntities()
    ' Define an ObjectSet to use with the LINQ query. 
    Dim products As ObjectSet(Of Product) = context.Products

    ' Define a LINQ query that returns a selected product. 
    Dim result = From product In products _
        Where product.ProductID = productID _
        Select product

    ' Cast the inferred type var to an ObjectQuery 
    ' and then write the store commands for the query. 
    Console.WriteLine(DirectCast(result, ObjectQuery(Of Product)).ToTraceString())
End Using
int productID = 900;
using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    // Define an ObjectSet to use with the LINQ query.
    ObjectSet<Product> products = context.Products;

    // Define a LINQ query that returns a selected product.
    var result = from product in products
                 where product.ProductID == productID
                 select product;

    // Cast the inferred type var to an ObjectQuery
    // and then write the store commands for the query.
    Console.WriteLine(((ObjectQuery<Product>)result).ToTraceString());
}

Cet exemple utilise Entity SQL .

Dim productID = 900

Using context As New AdventureWorksEntities()
    ' Define the Entity SQL query string. 
    Dim queryString As String = "SELECT VALUE product FROM AdventureWorksEntities.Products AS product " & _
        " WHERE product.ProductID = @productID"

    ' Define the object query with the query string. 
    Dim productQuery As New ObjectQuery(Of Product)(queryString, context, MergeOption.AppendOnly)
    productQuery.Parameters.Add(New ObjectParameter("productID", productID))

    ' Write the store commands for the query. 
    Console.WriteLine(productQuery.ToTraceString())
End Using
int productID = 900;
using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    // Define the Entity SQL query string.
    string queryString =
        @"SELECT VALUE product FROM AdventureWorksEntities.Products AS product 
      WHERE product.ProductID = @productID";

    // Define the object query with the query string.
    ObjectQuery<Product> productQuery =
        new ObjectQuery<Product>(queryString, context, MergeOption.AppendOnly);

    productQuery.Parameters.Add(new ObjectParameter("productID", productID));

    // Write the store commands for the query.
    Console.WriteLine(productQuery.ToTraceString());
}

Cet exemple utilise la méthode du Générateur de requêtes.

Dim productID = 900
Using context As New AdventureWorksEntities()
    ' Define the object query for the specific product. 
    Dim productQuery As ObjectQuery(Of Product) = context.Products.Where("it.ProductID = @productID")
    productQuery.Parameters.Add(New ObjectParameter("productID", productID))

    ' Write the store commands for the query. 
    Console.WriteLine(productQuery.ToTraceString())
End Using
int productID = 900;
using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    // Define the object query for the specific product.
    ObjectQuery<Product> productQuery =
        context.Products.Where("it.ProductID = @productID");
    productQuery.Parameters.Add(new ObjectParameter("productID", productID));

    // Write the store commands for the query.
    Console.WriteLine(productQuery.ToTraceString());
}

Voir aussi

Concepts

Requêtes d'objet (Entity Framework)
Interrogation d'un modèle conceptuel (Entity Framework)
LINQ to Entities
Vue d'ensemble d'Entity SQL