Procédure : explorer des relations à l'aide de l'opérateur Navigate (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 du RefType 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 Entité Dada Modèle 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
L'exemple suivant montre comment explorer des relations dans Entité SQL à l'aide de l'opérateur NAVIGATE (Entity SQL). L'opérateur Navigate prend les paramètres suivants : une instance d'une entité, le type de relation, la fin de la relation et le début de la relation. La version la plus simple de l'opérateur Navigate prend une instance d'une entité et le type de relation. L'exemple suivant montre l'utilisation de la version la plus simple de l'opérateur Navigate.
Using connection As EntityConnection = New EntityConnection("name=AdventureWorksEntities")
connection.Open()
Try
' Create an EntityCommand and pass the connection object
' and Entity SQL query to its constructor.
Using cmd As EntityCommand = connection.CreateCommand()
' Create an Entity SQL query.
Dim esqlQuery As String = "SELECT address.AddressID, (SELECT VALUE DEREF(soh) FROM " & _
"NAVIGATE(address, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) " & _
"AS soh) FROM AdventureWorksEntities.Address AS address"
cmd.CommandText = esqlQuery
' Execute the command.
Using reader As DbDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
' Start reading.
Do While reader.Read
Console.WriteLine(reader.Item("AddressID"))
Loop
End Using
End Using
Catch ex As EntityException
Console.WriteLine(ex.ToString())
End Try
connection.Close()
End Using
using (EntityConnection conn =
new EntityConnection("name=AdventureWorksEntities"))
{
conn.Open();
try
{
// Create an EntityCommand.
using (EntityCommand cmd = conn.CreateCommand())
{
// Create an Entity SQL query.
string esqlQuery =
@"SELECT address.AddressID, (SELECT VALUE DEREF(soh) FROM
NAVIGATE(address, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID)
AS soh) FROM AdventureWorksEntities.Address AS address";
cmd.CommandText = esqlQuery;
// Execute the command.
using (DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
// Start reading.
while (rdr.Read())
{
Console.WriteLine(rdr["AddressID"]);
}
}
}
}
catch (EntityException ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
}
Voir aussi
Concepts
Autres ressources
Utilisation d'EntityClient (Tâches Entity Framework)
How to: Execute an Entity SQL Query Using EntityCommand