Procédure : exécuter une requête qui retourne une collection de types anonymes (Entity Framework)
Cette rubrique fournit des exemples d'exécution de requêtes qui retournent une collection d'instances d'un type anonyme. Un type anonyme est un type qui n'est pas défini dans le modèle conceptuel. Par exemple, la requête Entity SQL suivante retourne une collection de types anonymes qui contiennent des lignes à deux colonnes (une valeur entière pour ProductID et une chaîne pour Name) : "SELECT p.ProductID, p.Name FROM AdventureWorksEntities.Products as p"
. L'exemple suivant retourne une collection de produits (« Products »), et le type Product est défini dans le modèle conceptuel : "SELECT p FROM AdventureWorksEntities.Products as p"
.
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
L'exemple ci-dessous utilise LINQ to Entities .
Using context As New AdventureWorksEntities
Dim products As ObjectSet(Of Product) = context.Products
Dim query = _
From product In products _
Select New With _
{ _
.ProductId = product.ProductID, _
.ProductName = product.Name _
}
Console.WriteLine("Product Info:")
For Each productInfo In query
Console.WriteLine("Product Id: {0} Product name: {1} ", _
productInfo.ProductId, productInfo.ProductName)
Next
End Using
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
var query =
from product in context.Products
select new
{
ProductId = product.ProductID,
ProductName = product.Name
};
Console.WriteLine("Product Info:");
foreach (var productInfo in query)
{
Console.WriteLine("Product Id: {0} Product name: {1} ",
productInfo.ProductId, productInfo.ProductName);
}
}
L'exemple ci-dessous utilise Entity SQL .
Using context As New AdventureWorksEntities()
Dim myQuery As String = "SELECT p.ProductID, p.Name FROM AdventureWorksEntities.Products as p"
For Each rec As DbDataRecord In New ObjectQuery(Of DbDataRecord)(myQuery, context)
Console.WriteLine("ID {0}; Name {1}", rec(0), rec(1))
Next
End Using
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
string myQuery = @"SELECT p.ProductID, p.Name FROM
AdventureWorksEntities.Products as p";
foreach (DbDataRecord rec in
new ObjectQuery<DbDataRecord>(myQuery, context))
{
Console.WriteLine("ID {0}; Name {1}", rec[0], rec[1]);
}
}
L'exemple ci-dessous utilise la méthode du Générateur de requêtes.
Using context As New AdventureWorksEntities()
' Use the Select method to define the projection.
Dim query As ObjectQuery(Of DbDataRecord) = context.Products.Select("it.ProductID, it.Name")
' Iterate through the collection of data rows.
For Each rec As DbDataRecord In query
Console.WriteLine("ID {0}; Name {1}", rec(0), rec(1))
Next
End Using
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
// Use the Select method to define the projection.
ObjectQuery<DbDataRecord> query =
context.Products.Select("it.ProductID, it.Name");
// Iterate through the collection of data rows.
foreach (DbDataRecord rec in query)
{
Console.WriteLine("ID {0}; Name {1}", rec[0], rec[1]);
}
}
Voir aussi
Tâches
Procédure : exécuter une requête qui retourne des objets de type d'entité (Entity Framework)
Procédure : exécuter une requête qui retourne une collection de types primitifs (Entity Framework)
Procédure : exécuter une requête paramétrable (Entity Framework)