NHibernate 映射 - 总记录。 (流利的冬眠)
NHibernate Mapping - total records. (Fluent Nhibernate)
我有 class class1 具有一些属性和一个 Mapper class Class1Map,它映射到数据库中的 table1。
我需要使用 NHibernate 在单个查询中从 table1 中获取前 10 条记录以及 table 中的记录总数。
我在 class1 'total records' 中添加了新的 属性 。我如何在 class1Map.
中映射它
这将是性能问题。您将为每一行执行子查询。
我不推荐这个。如果需要,请将公式添加到映射中
Id(x => x.Id).Column("id").GeneratedBy.Identity();
Map(x => x.PropA).Column("propA").Nullable();
Map(x => x.TotalRecords).Formula("(select Count(1) from tableA)");
我推荐。
1- 在执行查询之前获取 table 的 totalRecords
2- 执行您的查询。
3- 像这样设置 属性:
var recordsCount = Session.Query<TableA>().Count();
var objects = Session.Query<TableA>().Where(yourExpression).Take(10);
objects.Foreach(f=> f.TotalRecords = recordsCount);
return objects;
我有 class class1 具有一些属性和一个 Mapper class Class1Map,它映射到数据库中的 table1。
我需要使用 NHibernate 在单个查询中从 table1 中获取前 10 条记录以及 table 中的记录总数。
我在 class1 'total records' 中添加了新的 属性 。我如何在 class1Map.
中映射它这将是性能问题。您将为每一行执行子查询。
我不推荐这个。如果需要,请将公式添加到映射中
Id(x => x.Id).Column("id").GeneratedBy.Identity();
Map(x => x.PropA).Column("propA").Nullable();
Map(x => x.TotalRecords).Formula("(select Count(1) from tableA)");
我推荐。 1- 在执行查询之前获取 table 的 totalRecords 2- 执行您的查询。 3- 像这样设置 属性:
var recordsCount = Session.Query<TableA>().Count();
var objects = Session.Query<TableA>().Where(yourExpression).Take(10);
objects.Foreach(f=> f.TotalRecords = recordsCount);
return objects;