รวมอุปกรณ์นำทางบน 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 => {จากรายการย่อย Testresultaten ใน [x].Testresultaten select [subItem].Test}' ไม่ถูกต้อง นิพจน์ควรแสดงถึงการเข้าถึงคุณสมบัติ: 't => t.MyProperty'

Test var ในคลาส Testresultaten เป็นคุณสมบัติ ไม่ใช่ฟิลด์ ผมทำอะไรผิดหรือเปล่า? และสามารถเข้าถึงได้เหมือนกับ Gereedschap อยู่ใน Keuring


person Kip ei    schedule 07.11.2016    source แหล่งที่มา
comment
และการทดสอบเป็นเอนทิตีในแบบจำลองของคุณ?   -  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