Можно ли загрузить вложенные свойства навигации с помощью EntityEntry.Reference? - PullRequest
0 голосов
/ 13 февраля 2019

Возьмем следующие примеры классов:

class TemplatePart
{
    public PartStock stock {get; set;}
    ...other POCOs
}

class PartStock
{
    public Part part {get; set;}
    ...other POCOs
}

class Part
{
    public PartName name {get; set;}
    ...other POCOs
}

Теперь предположим, что у меня уже есть сущность для TemplatePart.Я могу сделать это:

var entry = context.Entry(templatePart);
entry.Reference(x => x.PartStock).Load();

Это загрузит свойство навигации для PartStock.Но как мне это сделать:

entry.Reference(x => x.PartStock.Part).Load();

Это приводит к исключению:

Выражение 'x => x.PartStock.Part' не является допустимым выражением свойства.Выражение должно представлять простой доступ к свойству: 't => t.MyProperty'.Имя параметра: propertyAccessExpression

Есть ли альтернатива этому, которая все еще использует entry, который у меня уже есть?Я не хочу перезагружать все это снова, используя Include, если не нужно.

Я использую EntityFramework Core 2.

1 Ответ

0 голосов
/ 13 февраля 2019

Вместо прямого вызова метода Load, вы можете использовать комбинацию методов Query(), Include / ThenInclude и Load:

entry.Reference(x => x.PartStock)
    .Query()
    .Include(x => x.Part)
    .Load();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...