Gewusst wie: Navigieren in Beziehungen mit dem Navigate-Operator (EntityClient)
In diesem Thema wird dargestellt, wie ein Befehl für ein konzeptionelles Modell unter Verwendung eines EntityCommand-Objekts ausgeführt wird, und wie die RefType-Ergebnisse mithilfe von EntityDataReader abgerufen werden.
So führen Sie den Code in diesem Beispiel aus
Fügen Sie dem Projekt AdventureWorks Sales-Modell hinzu und konfigurieren Sie das Projekt für die Verwendung von Entity Framework . Weitere Informationen finden Sie unter Gewusst wie: Verwenden des Entity Data Model-Assistenten (Entity Framework).
Fügen Sie der Codepage Ihrer Anwendung die folgenden using-Anweisungen (Imports in Visual Basic) hinzu:
Imports System 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
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 System.Data.Metadata.Edm;
Beispiel
Das folgende Beispiel zeigt, wie in Entity SQL Beziehungen mithilfe des NAVIGATE (Entity SQL)-Operators navigiert wird. Der Navigate-Operator benötigt die folgenden Parameter: eine Instanz einer Entität, den Beziehungstyp, das Ende der Beziehung und den Anfang der Beziehung. Optional können Sie nur eine Instanz einer Entität und den Beziehungstyp an den Navigate-Operator übergeben.
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
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();
}
Siehe auch
Konzepte
EntityClient-Anbieter für Entity Framework
Entity SQL-Sprache