EntityFramework Query返回关系的相同对象

时间:2017-02-15 12:10:22

标签: c# entity-framework

我在将标题写成更有意义的内容方面遇到了麻烦,所以在我的问题中我会变得有点啰嗦。

我有这个EF查询:

    var allSocs = _db.Socs
    .Where(x => x.Soc6 != null)
    .Select(x => new SocModel {
        OccupationalEmploymentStatistics = x.OccupationalEmploymentStatistics
                    .Where(y => y.GeographyId == 25 && y.Release == "2015A01" && y.Naics == "000000")
                    .OrderByDescending(z => z.AnnualWageMedian),
        Soc6 = x.Soc6,
        OnetSocs = x.OnetSoc,
        Name = x.Name,
        Description = x.Description,
        EmploymentProjections = x.EmploymentProjections
                    .Where(y => y.GeographyId == "201400" && y.Naics == "000000")
    }).ToList();  

它返回一个名为Soc的对象列表,它们具有一些原始属性和三个对象属性OnetsocsOccupationalEmploymentStatisticsEmploymentProjections

我所拥有的行为是所有非对象字段都正常工作,EmploymentProjectionsOnetSocs也是如此。

问题在于OccupationalEmploymentStatistics表现得很奇怪。似乎EF只是一个 OccupationalEmploymentStastic并将其应用于_db.Socs中的所有记录。

如果我设置断点并将鼠标悬停在_db.Socs上,我会显示有only one个对象。但是,allSocs中有适当数量的Socs(841)。

我已尝试删除OrderByDescending以查看是否可能是问题,但我仍然会遇到相同的行为。

对于某些背景信息,我正在使用的表格都是外部表格,我必须手动绘制关系,因为EF没有接受它们。

编辑:更多背景信息。如果我提出另一个问题,那就是 var socs = _db.Socs.ToList(),只有第一条记录有任何OccupationalEmploymentStatistics。没有其他记录有任何

1 个答案:

答案 0 :(得分:0)

因为EF使用身份地图模式。基本上,EF会话只存储给定实体和id的一个实例,并且每当某个实体指向同一个DB表和主键时,它将始终重用相同的实例。