连接多个表-Nhibernate

问题描述

我有四个要使用Nhibernate-QueryOver查询的表。

课程:

class Process {
    int Id {get;set;}
    int Name {get;set;} 
}

class Task {
int Id {get;set;}
int Name {get;set;}
IList<Process> Process { get; set; }
}


class ScheduledTask {
int Id {get;set;}
int Name {get;set;}
DateTime From { get; set; }
DateTime To { get; set; }
Task Task { get; set; }
}


class ArchivedTask {
int Id {get;set;}
int Name {get;set;}
Task Task { get; set; }
}

我尝试了以下查询,但是没有用。我仍在努力,但不知道如何创建具有多个联接的查询。我更喜欢使用QueryOver或条件而不是createquery

 Process p = null;
 Task t = null;
 ScheduledTask st = null;
 ArchivedTask at = null;

 var task = session.QueryOver<Task>(() => t)
       .JoinAlias(() => t.Process,() => p)
       .JoinAlias(() => st.Task,() => t)
       .JoinAlias(() => at.Task,() => t)
       .JoinAlias(() => WRAlias.WorkOrders,() => WOAlias)
       .JoinAlias(() => WOAlias.Locations,() => locationAlias)
       .JoinEntityAlias(() => AspAlias,() => AspAlias.Id == WRAlias.CreatedBy)
       .Where(x => t.Process.Id == 1)
       .TransformUsing(Transformers.AliasToBean<Task>()).List<Task>();

我想给我一个像这样的json:

  {
       "Task":{
          "Name":"task1","Processes":[
             {
                "Id":1,"Name":"P1"
             },{
                "Id":2,"Name":"P2"
             }
          ],"ScheduledTask":{
             "Name":"scheduled task","From":"12/12/2012","To":"13/12/2012"
          },"ArchivedTask"{
             "Id":1,"Name":"archived task"
          }
       }
    }
}

我需要一种使用nhibernate创建上述Json的方法

解决方法

尝试将与Task相同的内容添加到Process类中:

class Task 
{
    int Id {get;set;}
    int Name {get;set;}
    IList<Process> Processes{ get; set; }
    IList<ScheduledTask> ScheduledTask{ get; set; }
    IList<ArchivedTask> ArchivedTask{ get; set; }
}