EntityFramework外部表未获取所有数据

时间:2017-02-15 12:59:08

标签: c# entity-framework

我有一堆(~20个)外部表,我正在为一个应用程序工作。我遇到一个大问题的问题,我认为我已经部分追查了,但我坚持实际的解决方案。 Here是我的edmx的屏幕截图,显示了两个表和关系。

每当我从数据库中选择Socs时(通过_db.Socs.ToList()),我希望每个Soc都有一个OccupationalEmploymentStatistics的列表。但是,我看到的行为是只有第一 SocOccupationalEmploymentStatistics(至少通过调试并手动查看返回的841条记录中的大约20条。 841条记录应该有OccupationalEmploymentStatistics,尽管它是一个可以为空的字段。

当我尝试使用oes过滤到只是 Socs时,通过这个:var allSocs = _db.Socs.Where(x => x.OccupationalEmploymentStatistics != null).ToList();,我得到了

Cannot compare elements of type 'System.Collections.Generic.ICollection`1[[MCCDIP.SPA.Data.OccupationalEmploymentStatistic, MCCDIP.SPA.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. Only primitive types, enumeration types and entity types are supported.

我完全不知道这里发生了什么。

1 个答案:

答案 0 :(得分:0)

如果您想选择所有没有任何职业就业统计数据的Socs,您可以使用以下linq查询:

var query = 
   from s in _db.Socs
   join oes in _db.OccupationalEmploymentStatistics on oes.Soc equals s.Soc1 into gj
   from oes in gj.DefaultIfEmpty()
   where oes == null
   select s;

query = query.Distinct();

如果您想要加载OccupationalEmploymentStatistics集合的所有Socs,您可以使用以下查询:

var query = 
   from s in _db.Socs
       .Include(x => x.OccupationalEmploymentStatistics)
   select s;