我正在尝试使用EF6创建一个查询 我创建了真实数据库的模拟版本,对愚蠢的表命名感到抱歉,但是真实的表名更加奇怪,还会使您更加困惑:-)
我想从开始表中获取数据
开始,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)
问题
L
中是一个抽象类,而类R,P
从其继承,因此,我应该得到R
,这就是为什么我使用as R
的原因在我的查询中,它似乎有效,因为我没有遇到任何编译器错误,甚至没有得到正确的结果。我担心的是(我是否通过在LINQ查询中进行强制转换来正确执行操作?我的配置
DbContext.Configuration.ProxyCreationEnabled = false;
DbContext.Configuration.LazyLoadingEnabled = false;
我没有收到任何错误,但是如果我包含E
,那么所有集合都是空的
最后请原谅我的英语不好