在Entity Framework中使用Include()和匿名类型

时间:2017-12-04 09:13:34

标签: c# entity-framework eager-loading

我正在尝试使用Include方法急切加载一些属性,如下所示:

var dbData = dbContext.Locators.Include(x => x.PhysicalObjects.Select(p => p.Parent)).Include(x => x.PhysicalObjects.Select(p =>p.Type.AllowedSubTypes))
                .Where(x => x.id==1)).Select(x => new
                {
                    newContainer = x.PhysicalObjects.Where(p => p.Id== newContainerId).FirstOrDefault(),
                    phyiscalObject = x.PhysicalObjects.Where(p => p.Id == id).FirstOrDefault()
                }).FirstOrDefault();

但是它将Parent和Type属性返回为null(我检查了数据库它们不是null)。

那么我怎样才能加载这些属性呢?

P.S

我正在使用Entity Framework V6.1.3

1 个答案:

答案 0 :(得分:0)

根据DevilSuichiro上面的评论,查询将如下:

 var dbData = dbContext.Locators.Include(x => x.PhysicalObjects.Select(p => p.Parent)).Include(x => x.PhysicalObjects.Select(p =>p.Type.AllowedSubTypes))
                .Where(x => x.Id==1)).Take(2).ToList().Select(x => new
                {
                    newContainer = x.PhysicalObjects.Where(p => p.Id== newContainerId).FirstOrDefault(),
                    phyiscalObject = x.PhysicalObjects.Where(p => p.Id == id).FirstOrDefault()
                }).FirstOrDefault();

它对我有用,但如果有的话,我仍然会等待更好的答案。