Cómo navegar por las relaciones con el operador Navigate (EntityClient)
En este tema se proporciona un ejemplo de cómo ejecutar un comando con un Entity Data Model utilizando EntityCommand y cómo recuperar los resultados de RefType utilizando EntityDataReader.
Para ejecutar el código de este ejemplo
Agregue el modelo AdventureWorks Sales al proyecto y configure el proyecto para utilizar Entity Framework. Para ello, elija entre las siguientes opciones:
Si tiene instaladas las herramientas de Entity Dada Model, complete el procedimiento de Cómo usar el Asistente para Entity Data Model (Entity Framework).
De lo contrario, complete los procedimientos de Cómo configurar manualmente un proyecto de Entity Framework y Cómo definir manualmente un modelo Entity Data Model (Entity Framework).
En la página de códigos de la aplicación, agregue las instrucciones using siguientes (Imports en Visual Basic):
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;
Ejemplo
En el siguiente ejemplo se muestra cómo navegar por las relaciones de Entity SQL con el operador NAVIGATE (Entity SQL). El operador Navigate acepta los parámetros siguientes: una instancia de una entidad, el tipo de relación, el extremo de la relación y el comienzo de la relación. La versión más sencilla del operador Navigate acepta una instancia de una entidad y el tipo de relación. En el ejemplo siguiente se muestra cómo usar la versión más sencilla del operador 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();
}
Vea también
Conceptos
Otros recursos
Trabajar con EntityClient (tareas de Entity Framework)
How to: Execute an Entity SQL Query Using EntityCommand