【问题标题】:Entity Framework not considering the 2nd level of relational data实体框架不考虑第二级关系数据
【发布时间】:2020-07-27 17:13:02
【问题描述】:

我有这样的课

public partial class TblCrrequests
{
        public TblCrrequests()
        {
            TblCrExternalBudget = new HashSet<TblCrExternalBudget>();
        }

        public int CrId { get; set; }
        public string ProjectCode { get; set; }
       
        public virtual ICollection<TblCrExternalBudget> TblCrExternalBudget { get; set; }
}

public partial class TblCrExternalBudget
{
        public int? CrId { get; set; }
        public int? TypeId { get; set; }

        public virtual TblCrrequests Cr { get; set; }
        public virtual TblExternalBudgetTypes Type { get; set; }
}

public partial class TblExternalBudgetTypes
{
        public TblExternalBudgetTypes()
        {
            TblCrExternalBudget = new HashSet<TblCrExternalBudget>();
        }

        public int TypeId { get; set; }
        public string TypeName { get; set; }

        public virtual ICollection<TblCrExternalBudget> TblCrExternalBudget { get; set; }
}

为了获取TblCrrequests 类型的所有数据,我编写了这段代码

List<TblCrrequests> mycr = _context.TblCrrequests
                    .Include(m => m.TblCrExternalBudget)
                    .Where(x => x.ProjectCode == pcode)
                    .OrderByDescending(d => d.RequestedOn)
                    .Take(8)
                    .ToList<TblCrrequests>();

但它不返回第三级TblExternalBudgetTypes

所以我尝试了ThenInlcude 这样触发了错误:

List<TblCrrequests> mycr = _context.TblCrrequests
                    .Include(m => m.TblCrExternalBudget).ThenInclude(n => n.TblExternalBudgetTypes)
                    .Include(m => m.TblCrInternalbudget)
                    .Where(x => x.ProjectCode == pcode)
                    .OrderByDescending(d => d.RequestedOn)
                    .Take(8)
                    .ToList<TblCrrequests>();

错误:

“ICollection”不包含“TblExternalBudgetTypes”的定义,并且找不到接受“ICollection”类型的第一个参数的可访问扩展方法“TblExternalBudgetTypes”

我做错了什么或者我应该如何获得该结果中的第三个表数据?

【问题讨论】:

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


    【解决方案1】:

    TblCrExternalBudgetTypeTblExternalBudgetTypes 类型的属性,所以你需要这样做:

    List<TblCrrequests> mycr = _context.TblCrrequests
                    .Include(m => m.TblCrExternalBudget)
                         .ThenInclude(n => n.Type)
                    ...
    

    【讨论】:

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