EF Core, объект не может ссылаться на другие объекты - PullRequest
0 голосов
/ 16 мая 2018

У меня есть древовидная структура.Это дерево имеет Nodes.Каждый объект в моем проекте может ссылаться на один из этих узлов.Однако когда я запрашиваю использование LINQ для объекта, он не может вернуть данные этих узлов.

public async Task<NodeModel> FindByID(string pID, CancellationToken pCancellationToken)
{
    pCancellationToken.ThrowIfCancellationRequested();
    return await Context.Nodes.FirstOrDefaultAsync(m => m.ID == pID);
}

Выше описан способ запроса контекста для одного объекта на основе ID.На фото ниже видно, что его возвращают null.

enter image description here

Для некоторой ясности.B является потомком A.
Когда я запрашиваю список следующим образом:

mContext.Nodes.ToList();

I запрос может связать узлы?

Что здесь происходит?

enter image description here

1 Ответ

0 голосов
/ 16 мая 2018

Я думаю, это потому, что вы лениво загрузили свойства навигации.

Попробуйте изменить ваш запрос следующим образом

public async Task<NodeModel> FindByID(string pID, CancellationToken pCancellationToken)
{
        pCancellationToken.ThrowIfCancellationRequested();
        return await Context.Nodes.Include(m => m.Node).FirstOrDefaultAsync(m => m.ID == pID);

}

Причина, по которой вы работаете при запросе всех записей, заключается в том, что Entity Framework достаточно умен, чтобы знать, что в него уже загружен этот объект. Поскольку в этом случае вы запрашиваете полный набор данных, узлы уже загружены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...