Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Explizites Laden
Sie können eine Navigationseigenschaft explizit über die DbContext.Entry(...) API laden.
using (var context = new BloggingContext())
{
var blog = await context.Blogs
.SingleAsync(b => b.BlogId == 1);
await context.Entry(blog)
.Collection(b => b.Posts)
.LoadAsync();
await context.Entry(blog)
.Reference(b => b.Owner)
.LoadAsync();
}
Sie können eine Navigationseigenschaft auch explizit laden, indem Sie eine separate Abfrage ausführen, die die zugehörigen Entitäten zurückgibt. Wenn die Änderungsnachverfolgung aktiviert ist, legt EF Core beim Materialisieren einer Entität automatisch die Navigationseigenschaften der neu geladenen Entität fest, um auf bereits geladene Entitäten zu verweisen und die Navigationseigenschaften der bereits geladenen Entitäten festzulegen, um auf die neu geladene Entität zu verweisen.
Abfragen verwandter Entitäten
Sie können auch eine LINQ-Abfrage abrufen, die den Inhalt einer Navigationseigenschaft darstellt.
Auf diese Weise können Sie andere Operatoren auf die Abfrage anwenden. Beispiel: Anwenden eines Aggregatoperators auf die zugehörigen Entitäten, ohne sie in den Arbeitsspeicher zu laden.
using (var context = new BloggingContext())
{
var blog = await context.Blogs
.SingleAsync(b => b.BlogId == 1);
var postCount = await context.Entry(blog)
.Collection(b => b.Posts)
.Query()
.CountAsync();
}
Sie können auch filtern, welche zugehörigen Entitäten in den Arbeitsspeicher geladen werden.
using (var context = new BloggingContext())
{
var blog = await context.Blogs
.SingleAsync(b => b.BlogId == 1);
var goodPosts = await context.Entry(blog)
.Collection(b => b.Posts)
.Query()
.Where(p => p.Rating > 3)
.ToListAsync();
}