gpt4 book ai didi

c# - 具有连接和分组依据的 NHibernate 查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:57 24 4
gpt4 key购买 nike

我有 4 个关联类,需要进行查询。

类是:

 public class Project{

IList<Process> Processes{get;set;}

}


public class Process{

IList<Association> Associations{get;set;}

}


public class Association{

public IList<MonthCapacity> MonthCapacities{get;set;}
public FieldOfActivity FieldOfActivity{get;set;}

}

public class MonthCapacity{

public int Hours{get;set;}
public DateTime MonthDate{get;set;}

}

public class FieldOfActivity{

}

查询应该产生一个 DTO:

 public class ChartDto{

public Project Project{get;set;}
public FieldOfActivity FieldOfActivity{get;set;}
public int Hours{get;set;}

}

我用 QueryOver 试过了,但没有成功。有人可以帮帮我吗?

提前致谢托比

最佳答案

你能测试这个吗:

Process processAlias = null;
Association assocAlias = null;
FieldOfActivity actAlias = null;

var subquery = QueryOver.Of<MonthCapacity>()
.Where(m => m.Association == assocAlias)
.Select(Projections.Sum<MonthCapacity>(m => m.Hours));

var results = session.QueryOver<Project>()
.JoinQueryOver(p => p.Processes, () => processAlias)
.JoinQueryOver(p => p.Associations, () => assocAlias)
.JoinAlias(p => p.FieldOfActivity, () => actAlias)
.Select(p => new ChartDto { Project = p, FieldOfActivity = actAlias, Hours = Projections.Subquery(subquery) })
.List();

编辑:

var results = session.QueryOver<Project>()
.JoinQueryOver(p => p.Processes, () => processAlias)
.JoinQueryOver(p => p.Associations, () => assocAlias)
.JoinAlias(p => p.FieldOfActivity, () => actAlias)
.SelectList(list => list
.Select(p => new ChartDto { Project = p, FieldOfActivity = actAlias, Hours = 0 })
.Select(Projections.Subquery(subquery))
)
.List<object[]>()
.Select(objects =>
{
var chart = (ChartDto)objects[0];
chart.Hours = (int)objects[1];
return chart;
});

关于c# - 具有连接和分组依据的 NHibernate 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8133469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com