如何包含表数据并在没有任何外键关系的对象之间进行推送

时间:2018-11-16 18:53:36

标签: .net asp.net-mvc entity-framework asp.net-core

我具有以下表格结构

TableA-> TableB(带有tableA的FK)-> TableC(带有tableB的FK)

TableX-> TableY(带有tableX的FK和带有tableC的另一个FK)

我正在使用.NET核心EF支架和生成的类,TableC和TableX类之间没有直接关系

public partial class TableA
    {
        public TableA()
        {
            TableB = new HashSet<TableB>();
        }
        public int Id { get; set; }
        public string Email { get; set; }     
        public ICollection<TableB> TableB { get; set; }

    }

 public partial class TableB
    {
        public TableB()
        {
            TableC = new HashSet<TableC>();
        }
        //Other prop

        public Users tableA { get; set; }
        public ICollection<TableC> tableC { get; set; }

    }

 public partial class TableC
    {
        public TableC()
        {
            tableY = new HashSet<TableY>();
        }
        //Other prop
        public TableB tableB { get; set; }
        public ICollection<TableY> tableY { get; set; }

    }

 public partial class TableY
    {
        //Other prop
        public TableC tableC { get; set; }
        public TableX tableX { get; set; }
    }

   public partial class TableX
    {   
        public TableX()
        {
            tableX = new HashSet<TableX>();
        }
        //Other prop
        public ICollection<TableX> tableX { get; set; }
    }

我正在使用以下查询

_context.TableA.Where(x => x.Email == email.Trim())
                        .Include(i => i.TableB )
                        .ThenInclude(k => k.TableC)
                        .ThenInclude(l => l.TableY)

我从对象链中缺少TableX,正在寻找一个查询,该查询可以使TableX成为TableC的子对象,例如波纹管

TableA-> TableB-> TableC-> TableX-> TableY

当我使用以下查询

 _context.TableA.Where(x => x.Email == email.Trim())
                            .Include(i => i.TableB )
                            .ThenInclude(k => k.TableC)
                            .ThenInclude(l => l.TableY.Select(g => g.tableX))

我遇到错误

ArgumentException:包含属性lambda表达式'p => p.Reservations'无效。该表达式应表示属性访问:“ t => t.MyProperty”。要定位在派生类型上声明的导航,请指定目标类型的显式键入的lambda参数,例如“(派生d)=> d.MyProperty”。

0 个答案:

没有答案