EntityFramework4.1を使用するASP.NetMVC3Webアプリケーションを構築しています。また、汎用リポジトリで作業ユニットパターンを使用します。モデルには、ShiftとShiftDateの2つのエンティティがあります。それらの構造については、下の図を参照してください。つまり、Shiftには1つまたは複数のShiftDateを含めることができ、ShiftDateは1つのShiftにのみ属することができます。
そのようなすべてのシフトのリストを返すクエリを作成したい
public IList<Shift> GetShifts(int id)
{
return _UoW.Shifts.Get(s => s.organisationID == id).OrderBy(s => s.startDate).ToList();
}
次に、Razorビューで、foreachループを使用して、各Shiftの詳細を一覧表示したいと思います。これらの詳細の1つは、各シフトが持つShiftDateの総数です。これを行うために私は次のようなことをします
foreach(var shiftDate in Model.Shifts)
{
@Html.DisplayFor(modelItem => item.ShiftDates.Count)
}
これは正常に機能しますが、shiftDateStatusIDが442に設定されているShiftDateをカウントで除外する必要があります。これを行うには、Linqクエリをこれに修正してみました。
return _UoW.Shifts.Get(s => s.organisationID == id && s.ShiftDates.Any(sd => sd.shiftDateStatusID != 442))
.OrderBy(s => s.startDate).ToList();
ただし、これでも、shiftDateStatusIDが442のShiftDatesはプルバックされます。
うまくいけば、これは理にかなっています。
フィードバックをいただければ幸いです。
ありがとう。