Como: Navegar relacionamentos com o operador Navigate
Este tópico mostra como executar um comando em um modelo conceitual usando um EntityCommand objeto e como recuperar os RefType resultados usando um EntityDataReaderarquivo .
Para executar o código neste exemplo
Adicione o Modelo de Vendas AdventureWorks ao seu projeto e configure seu projeto para usar o Entity Framework. Para obter mais informações, consulte Como usar o Assistente de Modelo de Dados de Entidade.
Na página de código do seu aplicativo, adicione as seguintes
using
diretivas (Imports
no Visual Basic):using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.EntityClient; using System.Data.Metadata.Edm;
Imports System.Collections.Generic Imports System.Collections Imports System.Data.Common Imports System.Data Imports System.IO Imports System.Data.SqlClient Imports System.Data.EntityClient Imports System.Data.Metadata.Edm
Exemplo
O exemplo a seguir mostra como navegar por relacionamentos no Entity SQL usando o operador NAVIGATE . O Navigate
operador usa os seguintes parâmetros: uma instância de uma entidade, o tipo de relacionamento, o fim do relacionamento e o início do relacionamento. Opcionalmente, você pode passar apenas uma instância de uma entidade e o tipo de relacionamento para o Navigate
operador.
using (EntityConnection conn =
new EntityConnection("name=AdventureWorksEntities"))
{
conn.Open();
// 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.Addresses AS address";
cmd.CommandText = esqlQuery;
// Execute the command.
using (DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
// Start reading.
while (rdr.Read())
{
Console.WriteLine(rdr["AddressID"]);
}
}
}
conn.Close();
}
Using conn As New EntityConnection("name=AdventureWorksEntities")
conn.Open()
' Create an EntityCommand.
Using cmd As EntityCommand = conn.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.Addresses AS address"
cmd.CommandText = esqlQuery
' Execute the command.
Using rdr As DbDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
' Start reading.
While rdr.Read()
Console.WriteLine(rdr("AddressID"))
End While
End Using
End Using
conn.Close()
End Using