nhibernate Fluent映射到自动查询中不包含属性

时间:2014-04-09 09:03:53

标签: c# sql nhibernate fluent-nhibernate fluent

我正在尝试为NHibernate中的类生成一个映射,该映射将映射到手写的查询,以包含不在类映射所涉及的表中的字段。

表格如下:

Id int 
Name varchar(50)
Parent int

班级:

int Id {get; set;} 
string Name {get; set;} 
int ParentId {get; set;}
int ChildCount {get; set;}

映射:

x => x.Id, "Id" 
x => x.Name, "Name" 
x => x.Parent, "Parent" 
x => x.ChildCount, "ChildCount"

有一个自定义查询返回'ChildCount'作为一个完美映射到类的属性,当该类用于与另一个类的关系并且NHibernate隐式加载该类时会出现问题。有没有办法指定ChildCount映射应该存在,但仅用于将查询绑定到类,而不是自动创建用于直接从数据库加载对象的SQL。

在后一种情况下,NHibernate失败,因为它沿着

行创建了一个SQL查询

SELECT Id, Name, Parent, ChildCount FROM ...

其中对象是作为关系的一部分加载的。

1 个答案:

答案 0 :(得分:0)

您可以使用Formula(string formula)方法映射此属性,并添加sql子查询来执行此操作,以获取示例:

Map(x => x.ChildCount).Formula("select count(*) from Table where parent=id");

这将导致子查询计算父项的数量,并在父列中传递id。