Entity Framework Core - отложенная загрузка не работает - PullRequest
0 голосов
/ 07 октября 2018

С учетом следующих 3 (упрощенных) классов:

  • ClassA {int Id;}
  • ClassB {int Id;}
  • JunctionClass {ClassA classA;ClassB classB;}

Когда я пытаюсь загрузить список JunctionClass ...

var junctionClassList = _appDbContext.JunctionClass
                                     .Include(jc => jc.ClassA)
                                     .Include(jc => jc.ClassB).ToList();

, код не загружает объекты ClassA и ClassB.

Я нашел исправление, но не думаю, что я использую EF Core так, как его следует использовать:

var classAList = _appDbContext.ClassA.ToList();
var classBList = _appDbContext.ClassB.ToList();

var junctionClassList = _appDbContext.JunctionClass
                                     .Include(jc => jc.ClassA)
                                     .Include(jc => jc.ClassB).ToList();

Таким образом, объект junctionClassList также будетзагрузите зависимости classA и classB.

У меня такой вопрос - это правильный способ использования отложенной / активной загрузки?Или есть другой способ?

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Ниже работает определение для Include.

    public class JunctionClass
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ClassA ClassA { get; set; }
    public virtual ClassB ClassB { get; set; }

}
public class ClassA
{
    public int Id { get; set; }
    public string Name { get; set; }
}
public class ClassB
{
    public int Id { get; set; }
    public string Name { get; set; }

}

Поделись с нами своим отличием.

0 голосов
/ 07 октября 2018

В этом случае вы используете Eager loading, используя Include. Ленивая загрузка представлена ​​в EF Core 2.1.Вам необходимо включить его явно.

...