親オブジェクト (シーズン) のリポジトリ設定があります。そのシーズン オブジェクトには、子オブジェクト (スケジュール) が含まれています。次に、そのオブジェクトには Match という子オブジェクトがあります。
経由でレコードを取得する場合
season.Schedules.AsQueryable().Where(s => s.Week == 1).ToList();
最初の 2 つのスケジュールの「Match」レコードのみが返されます。SSMS にアクセスすると、すべてのスケジュールの「一致」レコードが返されます。
オブジェクトのマッピングは次のとおりです。
シーズン:
HasMany(x => x.Schedules).KeyColumn("SeasonId");
スケジュール:
HasOne(x => x.Match).ForeignKey("MatchId");
最初の2つが機能し、残りの「Match」オブジェクトはすべてnullです(ただし、SSMSで「クエリ」を実行すると、それらは入力されます.
@model LeagueManager.Models.MatchModel
@foreach (var schedule in Model.Schedules.Where(s => s.Week == 1))
{
<div class="row">@schedule.Match.MatchResults25Game.Game1.PlayerA.DisplayName vs @schedule.Match.MatchResults25Game.Game1.PlayerB.DisplayName</div>
<div class="row">@schedule.Match.MatchResults25Game.Game2.PlayerA.DisplayName vs @schedule.Match.MatchResults25Game.Game2.PlayerB.DisplayName</div>
<div class="row">@schedule.Match.MatchResults25Game.Game3.PlayerA.DisplayName vs @schedule.Match.MatchResults25Game.Game3.PlayerB.DisplayName</div>
<div class="row">@schedule.Match.MatchResults25Game.Game4.PlayerA.DisplayName vs @schedule.Match.MatchResults25Game.Game4.PlayerB.DisplayName</div>
........
}
すべての「一致」値が返されない理由を理解するのに役立つ方法は何ですか、またはすべての設定方法に問題があります (最初の 2 つのレコードが戻ってくるので、そうは思いません... )
さらに背景情報が必要な場合はお知らせください。
更新
Express Profiler から取得したものは次のとおりです。
exec sp_executesql N'
SELECT schedules0_.SeasonId as SeasonId2_,
schedules0_.ScheduleId as ScheduleId2_,
schedules0_.ScheduleId as ScheduleId12_1_,
schedules0_.Week as Week12_1_,
schedules0_.MatchNumber as MatchNum3_12_1_,
schedules0_.MatchDate as MatchDate12_1_,
schedules0_.SeasonId as SeasonId12_1_,
schedules0_.TeamA as TeamA12_1_,
schedules0_.TeamB as TeamB12_1_,
match1_.MatchId as MatchId3_0_,
match1_.MatchResults25GameId as MatchRes2_3_0_
FROM Schedule schedules0_
left outer join Match match1_ on schedules0_.ScheduleId=match1_.MatchId
WHERE schedules0_.SeasonId=@p0',N'@p0 int',@p0=1
go