Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Expliciet laden
U kunt een navigatie-eigenschap expliciet laden via de DbContext.Entry(...) API.
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();
}
U kunt ook expliciet een navigatie-eigenschap laden door een afzonderlijke query uit te voeren die de gerelateerde entiteiten retourneert. Als wijzigingsregistratie is ingeschakeld, zal EF Core, wanneer een query een entiteit materialiseert, automatisch de navigatie-eigenschappen van de nieuw geladen entiteit instellen om te verwijzen naar entiteiten die al zijn geladen, en de navigatie-eigenschappen van de al geladen entiteiten instellen om te verwijzen naar de nieuw geladen entiteit.
Query's uitvoeren op gerelateerde entiteiten
U kunt ook een LINQ-query ophalen die de inhoud van een navigatie-eigenschap vertegenwoordigt.
Hiermee kunt u andere operators toepassen op de query. U kunt bijvoorbeeld een statistische operator toepassen op de gerelateerde entiteiten zonder ze in het geheugen te 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();
}
U kunt ook filteren welke gerelateerde entiteiten in het geheugen worden geladen.
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();
}