2013-12-16 15 views

Antwort

4

In EF erfolgt die Verknüpfung von Tabellen mithilfe von Navigationseigenschaften. Grundsätzlich macht EF es für Sie. Bei der Implementierung in Ihren Repositorys, sei es generisch oder nicht, können Sie die Methode Include aufrufen, wenn Sie Ihren Abfrageausdruck erstellen, um EF anzuweisen, die Navigationseigenschaften für Sie aufzufüllen.

Lassen Sie uns sagen, dass wir diese POCO-Klasse haben:

public class Dog 
{ 
    public int DogId { get; set; } 
    public string Name { get; set; } 

    public int OwnerId { get; set;} 
    public Owner Owner { get; set; } // the navigation property 
} 

public class Owner 
{ 
    public int OwnerId { get; set; } 
    public string Name { get; set; } 

    // another navigation property 
    // all the dogs that are related or owned by this specific owner 
    public ICollection<Dog> DogList { get; set; } 
    public ICollection<Cat> CatList { get; set; } 
} 

Hier ist ein Beispielcode-Schnipsel Fügen Sie mit:

public virtual IEnumerable<Dog> Retrieve() 
{ 
    var _query = context.Dog.Include(a => a.Owner); 
    ... 
    ...// rest of your code 
} 

Und für mehrere Tabellen können Sie nisten die umfassen Verfahren wie so:

public virtual IEnumerable<Owner> Retrieve() 
{ 
    // you can nest as many as you want if there are more nav properties 
    var _query = context.Owner 
     .Include(a => a.DogList) 
     .Include(a => a.CatList); 
    ... 
    ...// rest of your code 
} 

Sobald Sie nav Eigenschaften einschließen, dann schließt das im Grunde diese anderen Tabellen. Sehen Sie sich einfach das SQL an, das von der Abfrage generiert wird. Hoffe das hilft!

+0

Vielen Dank ... Sehr hilfreich. – user972255

Verwandte Themen