问题描述
我有四个要使用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; }
}