我有一个父对象(季节)的回购设置。该季节对象包含一个子对象(时间表)。然后该对象有一个名为 Match 的子对象。
通过检索记录时
season.Schedules.AsQueryable().Where(s => s.Week == 1).ToList();
它只返回前 2 个时间表的“匹配”记录。如果我去 SSMS,它会返回所有时间表的“匹配”记录。
以下是对象的映射:
季节:
HasMany(x => x.Schedules).KeyColumn("SeasonId");
日程:
HasOne(x => x.Match).ForeignKey("MatchId");
这是我尝试迭代匹配项的视图,其中前 2 个有效,并且所有剩余的“匹配”对象均为空(但在 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