Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Явная загрузка
Вы можете явно загрузить свойство навигации через 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();
}
Вы также можете явно загрузить свойство навигации, выполнив отдельный запрос, возвращающий связанные сущности. Если отслеживание изменений включено, то когда запрос материализует сущность, EF Core автоматически установит свойства навигации недавно загруженной сущности для ссылки на все уже загруженные сущности, а также установит свойства навигации уже загруженных сущностей для ссылки на недавно загруженную сущность.
Запрос связанных сущностей
Вы также можете получить запрос LINQ, представляющий содержимое свойства навигации.
Это позволяет применять к запросу дополнительные операторы. Например, применение статистического оператора над связанными сущностями без их загрузки в память.
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();
}
Вы также можете отфильтровать связанные сущности, загруженные в память.
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();
}