【问题标题】:Include navigation prop on ICollection在 ICollection 上包含导航道具
【发布时间】:2016-11-07 14:13:02
【问题描述】:

我有这个 Keuring 类,我遇到了一个问题,包括使用 linq 的 Testresultaten 集合属性上的导航项。

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 =&gt; item.Testresultaten.Select(subItem =&gt; 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'。

Testresultaten 类中的 Test 变量是属性而不是字段。我究竟做错了什么?它是可访问的,就像GereedschapKeuring 中一样

【问题讨论】:

  • 而测试是你模型中的一个实体?
  • 看看ThenInclude
  • 是的,它是一个实体

标签: c# entity-framework linq entity-framework-core


【解决方案1】:

您需要按照如下所示进行操作。

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

参考: Including multiple levels

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-09
    • 2019-09-11
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多