Включить навигационную поддержку в ICollection

У меня есть этот класс Keuring, и у меня есть проблема с включением элемента навигации в свойство коллекции Testresultaten с использованием linq.

public partial class Keuring
{
    public Keuring()
    {
        Testresultaten = new HashSet<Testresultaten>();
    }

    //Simple properties here

    //Complex properties below
    public virtual ICollection<Testresultaten> Testresultaten { get; set; }
    public virtual Gereedschap Gereedschap { get; set; }
}

Вот класс Testresultaten:

public partial class Testresultaten
{
    //Simple properties here

    //Complex properties below
    public virtual Test Test { get; set; }
    public virtual Keuring Keuring { get; set; }
}

Вот класс Gereedschap:

public partial class Gereedschap
{
    public Gereedschap()
    {
        Keuring = new HashSet<Keuring>();
    }

    //Simple properties here

    //Complex properties below
    public virtual ICollection<Keuring> Keuring { get; set; }
    public virtual Debiteur Debiteur { get; set; }
}

Это утверждение работает нормально:

var keuringEntry = db.Keuring.Include(item => item.Gereedschap).Include(item => item.Testresultaten).SingleOrDefault(item => item.key = "keyvalue");

Но когда я добавляю дополнительные Include вот так:
Include(item => item.Testresultaten.Select(subItem => subItem.Test))
оператор выдает ошибку:

var keuringEntry = db.Keuring.Include(item => item.Gereedschap).Include(item => item.Testresultaten.Select(subItem => subItem.Test)).SingleOrDefault(item => item.key = "keyvalue");

Ошибка: выражение свойства «x => {from Testresultaten subItem in [x].Testresultaten select [subItem].Test}» недопустимо. Выражение должно представлять доступ к свойству: 't => t.MyProperty'.

Переменная Test в классе Testresultaten является свойством, а не полем. Что я делаю не так? И он доступен так же, как Gereedschap в Keuring


person Kip ei    schedule 07.11.2016    source источник
comment
А Test - это сущность в вашей модели?   -  person octavioccl    schedule 07.11.2016
comment
Взгляните на ThenInclude.   -  person Ivan Stoev    schedule 07.11.2016
comment
Да это сущность   -  person Kip ei    schedule 07.11.2016


Ответы (1)


Вам нужно сделать это, как показано ниже.

var keuringEntry = db.Keuring.Include(item => item.Gereedschap)
                  .Include(item => item.Testresultaten)
                       .ThenInclude(subItem => subItem.Test)
                  .FirstOrDefault(item => item.key = "keyvalue");

Ссылка: < strong>Включая несколько уровней

person Sampath    schedule 07.11.2016