我有一個父對象(季節)的回購設置。該季節對象包含一個子對象(日程表)。然後該對象有一個名爲Match的子對象。Repo queryable只返回前2條記錄的行
當通過
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>
........
}
有什麼方法可以幫助我找出爲什麼它沒有返回所有的「匹配」值,或者是我的所有設置有什麼問題(我不會這麼認爲,因爲前兩條記錄來返回ok ...)
讓我知道是否需要更多的背景信息。
UPDATE
這是我從快遞探查獲得:
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 [email protected]',N'@p0 int',@p0=1
go
看看NHibernate生成的SQL,然後告訴我們,你需要什麼SQL。 – Rippo
作爲一般性考慮,您的視圖只能與ViewModel對象進行交互,而不能與任何DB Repository進行交互。也許這正是你在做什麼,只擊中已經加載在顯存邏輯中的對象。這可以解釋爲什麼你從數據庫中獲得不同的結果tahn – jbl
你確定你在計劃和匹配(HasOne)之間有一對一的關係嗎?如果不是,我會用'References'代替'HasOne'(多對一) – rivarolle