Entity Framework Core: загрузка связанных данных после запроса объекта - PullRequest
1 голос
/ 25 января 2020

Понятно, как запрашивать сущность и включать все связанные даты; Например:

using (var context = new BloggingContext())
{
    var blogs = context.Blogs
        .Include(blog => blog.Posts)
        .Include(blog => blog.Owner)
        .ToList();
}

REF

Мой вопрос заключается в том, что, учитывая сущность, в которой отсутствуют некоторые связанные данные, я могу попросить EF получить соответствующие данные из БД ?

Например:

var blog = context.Blogs.Find(1); // get the blog with ID=1

// how can I do something like:
blog.Include(x => x.Posts);

Ответы [ 3 ]

2 голосов
/ 25 января 2020

Как сказал microsoft , тип данных повтора метода Find() равен TEntity.

public virtual TEntity Find (params object[] keyValues);

. Это означает, что метод Find() ударит базу данных и получит TEntity. Таким образом, вы не можете расширить ваш запрос после Find() метода. следовательно, если вы хотите получить связанные данные в этом запросе, вы должны вызвать Include() перед любым методом, попавшим в базу данных. как в следующем запросе:

var blog = context.Blogs.Include(x => x.Posts).SingleOrDefault(x => x.Id == 1);

В заключение, то, что вы ожидали сделать с Includ(), невозможно, но если вы должны сделать это, как сказано в комментарии @GertArnold, вы может следовать этому пути.

удачи.

1 голос
/ 28 января 2020
context.Entry(blog).Collection(x => x.Posts).Load();
context.Entry(blog).Reference(x => x.Owner).Load();

Согласно этой ссылке , как предложено @ GertArnold

0 голосов
/ 25 января 2020

попробуйте использовать это

var blog = context.Blogs.Include(x => x.Posts).FirstOrDefault(x => x.Id == 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...