NHibernate和Group by到另一个类
本文关键字:另一个 by Group NHibernate | 更新日期: 2023-09-27 18:25:58
我有一个计划的课程SalesInYear
public class PlannedSalesInYear{
Vehicle _vehicle;
int _year;
int _plannedSales;
... Fields as Properties ...
}
这一类的测绘不应该是火箭科学,所以我把它排除在外。现在,我想为所有车辆选择数据,生成一个字典。
字典应该是这样的:
IDictionary<Vehicle, IDictionary<int, int>>
这可能使用hibernate(首选标准api)吗?由于性能问题,我想避开林克。所以dao应该直接选择字典。
提前感谢Tobi
两次往返
// get the results
IDictionary<Vehicle, IDictionary<int, int>> results = session.Query<PlannedSalesInYear>()
.Select(ps => new { VehicleId = ps.Vehicle.Id, ps.Year, ps.PlannedSales })
.AsEnumerable()
.GroupBy(a => a.VehicleId)
.ToDictionary(
gr => session.Load<Vehicle>(gr.Key),
gr => (IDictionary<int, int>)gr.ToDictionary(a => a.Year, a => a.PlannedSales));
// initialize the vehicles
session.QueryOver<Vehicle>().WhereRestrictionOn(v => v.Id).IsIn(results.Keys.Select(v => v.Id).ToArray()).List();
或一次具有更多数据的往返
// initialize the vehicles
session.Query<PlannedSalesInYear>()
.Fetch(ps => ps.Vehicle)
.AsEnumerable()
.GroupBy(a => a.Vehicle)
.ToDictionary(
gr => gr.Key,
gr => (IDictionary<int, int>)gr.ToDictionary(a => a.Year, a => a.PlannedSales));