Sertakan alat navigasi di ICollection

Saya memiliki kelas Keuring ini dan saya memiliki masalah dalam memasukkan item navigasi pada properti koleksi Testresultaten menggunakan 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; }
}

Ini kelas Testresultaten:

public partial class Testresultaten
{
    //Simple properties here

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

Ini kelas 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; }
}

Pernyataan ini berfungsi dengan baik:

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

Tetapi ketika saya menambahkan Include tambahan seperti ini:
Include(item => item.Testresultaten.Select(subItem => subItem.Test))
pernyataan tersebut memberikan kesalahan:

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

Kesalahan: Ekspresi properti 'x => {dari Testresultaten subItem in [x].Testresultaten select [subItem].Test}' tidak valid. Ekspresi tersebut harus mewakili akses properti: 't => t.MyProperty'.

Var Test di kelas Testresultaten adalah properti dan bukan bidang. Apa yang saya lakukan salah? Dan itu dapat diakses seperti Gereedschap di Keuring


person Kip ei    schedule 07.11.2016    source sumber
comment
Dan Test adalah entitas dalam model Anda?   -  person octavioccl    schedule 07.11.2016
comment
Lihat ThenInclude   -  person Ivan Stoev    schedule 07.11.2016
comment
Ya, itu adalah sebuah entitas   -  person Kip ei    schedule 07.11.2016


Jawaban (1)


Anda perlu melakukannya seperti yang ditunjukkan di bawah ini.

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

Referensi : < strong>Termasuk beberapa level

person Sampath    schedule 07.11.2016