webForumDet fria alternativet

Wheresats i nhibernate hämtar allt fast inte borde!

.NET

1 svar · 343 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
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>
Medlem sedan juni 20003 076 inlägg
#2

Hitta på:t! :) fetch på joinen gjorde tricket!

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)