die Objekthierarchie GegebenFügen Enkelkinder in EF Abfrage
public class Parent
{
public int Id { get; set; }
public virtual Child Child { get; set; }
}
public class Child
{
public int Id { get; set; }
public virtual GrandChild GrandChild { get; set; }
}
public class GrandChild
{
public int Id { get; set; }
}
und der DB Kontext
public class MyContext : DbContext
{
public DbSet<Parent> Parents { get; set; }
}
Man kann Kinder und Enkel mit Lambda-Syntax (using System.Data.Entity
) wie folgt sind:
using (MyContext ctx = new MyContext())
{
var hierarchy =
from p in ctx.Parents.Include(p => p.Child.GrandChild) select p;
}
Die Lambda-Syntax verhindert das Brechen der Abfrage, wenn die Klassennamen später sind verändert. Wenn jedoch Parent
hat eine ICollection<Child>
wie diese statt:
public class Parent
{
public int Id { get; set; }
public virtual ICollection<Child> Children { get; set; }
}
Lambda-Syntax nicht mehr funktioniert. Stattdessen kann man die Zeichenfolge Syntax:
var hierarchy = from p in ctx.Parents.Include("Children.GrandChild") select p;
Ist die Zeichenfolge, die die einzige Option Syntax, oder gibt es eine alternative Art und Weise Lambda-Syntax in dieser Situation zu benutzen?
Upvote verwenden. Vielen Dank, dass Sie auch den MSDN-Link hinzugefügt haben. – granadaCoder