一对多查询中的一对多关系

时间:2018-06-22 16:30:09

标签: c# entity-framework linq

我正在尝试使用EF6创建一个查询 我创建了真实数据库的模拟版本,对愚蠢的表命名感到抱歉,但是真实的表名更加奇怪,还会使您更加困惑:-)

enter image description here

我想从开始表中获取数据

  

开始,B,C,D,F,E,X,G,R

PS:表DG和DLG联接表

我到目前为止所做的事情:

 var results = StartContext
               .Include(rec => rec.B)
               .Include(rec => rec.C)
               .Include(rec => rec.D)
               .Include(rec => rec.D.F)
               .Include(rec => rec.D.DG)
               .Include(rec => rec.D.DG.Select(sub => sub.G))
               .Include(rec => rec.D.DLG)
               .Include(rec => rec.D.DLG.Select(sub => sub.L as R))
               .Include(rec => rec.D.E.X)
               .Where(rec => rec.D.E.X_Id == 5)
               .ToList();
            return results;

如果我删除行,则此代码有效

.Include(rec => rec.D.E.X)
.Where(rec => rec.D.E.X_Id == 5)

问题

  1. 如何获取包括E表在内的所有结果
  2. 在我的代码L中是一个抽象类,而类R,P从其继承,因此,我应该得到R,这就是为什么我使用as R的原因在我的查询中,它似乎有效,因为我没有遇到任何编译器错误,甚至没有得到正确的结果。我担心的是(我是否通过在LINQ查询中进行强制转换来正确执行操作?

我的配置

    DbContext.Configuration.ProxyCreationEnabled = false;
    DbContext.Configuration.LazyLoadingEnabled = false;

我没有收到任何错误,但是如果我包含E,那么所有集合都是空的 最后请原谅我的英语不好

0 个答案:

没有答案