Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Explicit betöltés
A navigációs tulajdonságot explicit módon betöltheti az DbContext.Entry(...) API-val.
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();
}
A navigációs tulajdonságot külön lekérdezés végrehajtásával is betöltheti, amely a kapcsolódó entitásokat adja vissza. Ha a változáskövetés engedélyezve van, akkor amikor egy lekérdezés egy entitást hoz létre, az EF Core automatikusan beállítja az újonnan betöltött entitás navigációs tulajdonságait, hogy hivatkozzon a már betöltött entitásokra, és beállítja a már betöltött entitások navigációs tulajdonságait az újonnan betöltött entitásra való hivatkozáshoz.
Kapcsolódó entitások lekérdezése
Olyan LINQ-lekérdezést is lekérhet, amely egy navigációs tulajdonság tartalmát jelöli.
Így más operátorokat is alkalmazhat a lekérdezésre. Például aggregátum operátor alkalmazása a kapcsolódó entitásokra anélkül, hogy betölti őket a memóriába.
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();
}
Azt is szűrheti, hogy mely kapcsolódó entitások töltődnek be a memóriába.
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();
}