【问题标题】:Linq Using Child Collection in QueryLinq 在查询中使用子集合
【发布时间】:2021-04-18 03:16:53
【问题描述】:

我有下面的实体,底部有查询。我没有关注如何将听证会的子实体集合(数字内容)包含在返回集中。如果我不使用包含,它的空白(不应该是),并且使用包含我收到以下错误消息:

$exception {"表达式 'h.digital_Contents' 在 'Include' 操作,因为它不代表属性访问:'t => t.MyProperty'。要定位在派生类型上声明的导航,请使用强制转换 ('t => ((Derived)t).MyProperty') 或 'as' 运算符 ('t => (t 作为派生的).MyProperty')。收藏导航访问可以 通过组合 Where、OrderBy(Descending)、ThenBy(Descending) 进行过滤, 跳过或采取操作。有关包括相关的更多信息 数据,见 http://go.microsoft.com/fwlink/?LinkID=746393."}System.InvalidOperationException

public class Hearing
{
    [Key]
    public int Id { get; set; }

    public int HearingNumber { get; set; }

    public DateTime? End_Date { get; set; }

    public ICollection<Digital_Content> digital_Contents = new List<Digital_Content>();

}

public class Digital_Content
{
    [Key]
    public int Id { get; set; }

    [ForeignKey("Hearing")]
    public int HearingId { get; set; }

    public Hearing Hearing { get; set; }

    public string BlobStorageLink { get; set; }

    public DateTime? End_Date { get; set; }
}

查询:

 var ListHearings = await _context.Hearing
        .Where(h => h.HearingNumber == 55)
        .Include(h => h.digital_Contents)
        .ToListAsync();     
     

【问题讨论】:

    标签: c# linq asp.net-core


    【解决方案1】:

    { get; set; } 添加到您的 digital_contents 以将其从字段更改为属性,以便可以读取和写入您的 digital_contents(即填充您的属性):

    public ICollection<Digital_Content> digital_Contents { get; set; } = new List<Digital_Content>();
    

    那么您的.Include(x =&gt; x.digital_Contents) 应该会填充到您的返回集中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多