タイトルをより意味のあるものにすることに問題がありますので、私は質問に少し冗長にするつもりです。EntityFrameworkクエリ関係の同じオブジェクトを返します。
私はこの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
いくつかの原始的な性質と3つのオブジェクトのプロパティを持っているの、Onetsocs
、OccupationalEmploymentStatistics
、およびEmploymentProjections
と呼ばれるオブジェクトのリストを返します。
私が行っている動作は、EmploymentProjections
とOnetSocs
のように、すべての非オブジェクトフィールドが正常に動作しているということです。
問題はOccupationalEmploymentStatistics
が奇妙なことです。 EFはを1つだけOccupationalEmploymentStastic
とし、_db.Socs
のすべてのレコードに適用しているようです。
_db.Socs
にブレークポイントとマウスを設定すると、only oneオブジェクトがあることがわかります。しかし、allSocs
には適切な数のSocsがあります(841)。
私はOrderByDescending
を削除してみましたが、それが問題であるかどうかを確認しようとしましたが、まだ同じ動作が発生しています。
私が扱っているテーブルは、すべて外部テーブルです。私はEFがそれらを拾わなかったので、手動で関係を描く必要がありました。
EDIT:もう少し背景情報。 var socs = _db.Socs.ToList()
という別のクエリを作成した場合、最初のレコードのみがOccupationalEmploymentStatistics
になります。他のレコードはありません
興味深い...私はその言葉に全く慣れていません。必要なデータを得るにはどうすればよいですか? –