Hitta på:t! :) fetch på joinen gjorde tricket!
Frågan#1
Hej,
Jag har denna selectsats:
public IList<Task> GetTasksWithDateConditions(DateTime currentDate)
{
StringBuilder sb = new StringBuilder();
sb.Append("select t from Task t ");
sb.Append("inner join t.TaskDates td ");
sb.Append("where td.DisplayDate = :CurrentDate");
IQuery query = CurrentSession.CreateQuery(sb.ToString());
query.SetDateTime("CurrentDate", currentDate.Date);
return query.List<Task>();
}
Jag hämtar alltså en uppgift (task) på ett visst datum.
Detta funkar bra, selectsatsen är rätt så långt.
Men om jag sedan loopar alla datum som finns till uppgiften:
foreach(TaskDate date in GetTasksWithDateConditions[0].TaskDates)
{
Response.Write(date.DisplayDate.ToString() + "<br />");
}
Så spottar den ut 400 datum. Alltså inte bara det datumet som skickas in som currentDate i metoden.
Om jag vill få ut endast det datumet som används i wheresatsen, hur gör jag då?
Måste jag köra en separat selectsats för det?
Tanken med wheresatsen var just att inte hämta så himla många rader!
Kan det vara mappningsfilen som ställer till det? Den ser ut så här:
<class name="Entities.Task, Entities" table="Tasks">
<id name="ID" column="TaskID" type="int" unsaved-value="0">
<generator class="identity" />
</id>
...
<bag name="TaskDates" lazy="true" inverse="true" table="TasksDates" order-by="DisplayDate asc" cascade="all-delete-orphan" generic="true">
<key column="TaskID"/>
<many-to-many class="Entities.TaskDate, Entities" column="DateID" />
</bag>