Navigationseigenschaften
Navigationseigenschaften im Entity Framework bieten eine Möglichkeit, eine Zuordnung zwischen zwei Entitätstypen zu navigieren. Eine Navigationseigenschaft wird durch das NavigationProperty-Element (CSDL) im konzeptionellen Modell definiert. Jedes Objekt kann für jede Beziehung, an der es beteiligt ist, über eine Navigationseigenschaft verfügen. Mit Navigationseigenschaften können Sie Beziehungen in beiden Richtungen navigieren und verwalten, wobei entweder ein EntityReference-Objekt zurückgegeben wird, wenn die Multiplizität eins oder 0 (null) ist, oder eine EntityCollection-Auflistung zurückgegeben wird, wenn die Multiplizität n ist. Sie können sich auch für eine unidirektionale Navigation entscheiden. In diesem Fall können Sie die Navigationseigenschaft löschen. Weitere Informationen hierzu finden Sie unter How to: Edit and Delete Navigation Properties.
Wenn Sie von Entity Framework generierte Klassen verwenden, werden Navigationseigenschaften für Objekte erstellt, die an einer Beziehung beteiligt sind. Informationen zum Arbeiten mit Navigationseigenschaften in POCO-Entitäten finden Sie unter Anforderungen für die Erstellung von POCO-Proxys (Entity Framework).
Ändern von Beziehungen
Sie können mithilfe von Navigationseigenschaften eine Beziehung ändern. Im folgenden Beispiel wird ein anderer Kunde einer Bestellung zugeordnet, indem über die Customer
-Navigationseigenschaft für das Order
-Objekt auf den Kundenverweis zugegriffen wird, der dieser Bestellung zugeordnet ist: order.Customer = customer
.
Im folgenden Beispiel wird einer Bestellung ein vorhandener Kunde hinzugefügt wird, indem mit der Orders
-Navigationseigenschaft auf die Auflistung von orders
zugegriffen wird, die zum customer
-Objekt gehört:
customer.Orders.Add(order)
.
In einer Fremdschlüsselzuordnung können Sie eine Beziehung bilden oder ändern, indem Sie die Fremdschlüsseleigenschaft des abhängigen Objekts wie im folgenden Beispiel festlegen:
order.CustomerID = CustomerID
.
Weitere Informationen zu unabhängigen und Fremdschlüsselzuordnungen finden Sie unter Definieren und Verwalten von Beziehungen (Entity Framework).
Sie können Navigationseigenschaften zum Laden von Objekten verwenden, die sich auf eine Entität der definierten Zuordnung beziehen. Weitere Informationen finden Sie unter Laden von verknüpften Objekten (Entity Framework) und Gewusst wie: Navigieren in Beziehungen mithilfe von Navigationseigenschaften (Entitiy Framework).
Navigieren in Beziehungen
Im folgenden Beispiel mit methodenbasierter Abfragesyntax wird die SelectMany-Methode verwendet, um alle Aufträge von Kontakten mit dem Nachnamen "Zhou" abzurufen. Mit der Contact.SalesOrderHeader-Navigationseigenschaft wird eine Auflistung der SalesOrderHeader-Objekte für jeden Kontakt abgerufen.
Dim lastName = "Zhou"
Using context As New AdventureWorksEntities
Dim ordersQuery = context.Contacts _
.Where(Function(c) c.LastName = lastName) _
.SelectMany(Function(o) o.SalesOrderHeaders)
For Each order In ordersQuery
Console.WriteLine("Order ID: {0}, Order date: {1}, Total Due: {2}", _
order.SalesOrderID, order.OrderDate, order.TotalDue)
Next
End Using
string lastName = "Zhou";
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
IQueryable<SalesOrderHeader> ordersQuery = context.Contacts
.Where(c => c.LastName == lastName)
.SelectMany(c => c.SalesOrderHeaders);
foreach (var order in ordersQuery)
{
Console.WriteLine("Order ID: {0}, Order date: {1}, Total Due: {2}",
order.SalesOrderID, order.OrderDate, order.TotalDue);
}
}