Nhibernate 对具有公式属性的实体创建SQLQuery

Nhibernate 对具有公式属性的实体创建SQLQuery,nhibernate,Nhibernate,当我尝试使用CreateSqlQuery查询一个表并将其转换为包含formula属性的实体时,会出现以下异常 “值不能为空。 参数名称:fieldName“ 首先,是否可以对具有公式映射的实体使用createsqlquery 可以将CreateSQLQuery与公式一起使用 这是一个概念证明。映射(类不难猜测): 这里有一个问题: var foos = session.CreateSQLQuery( @" selec

当我尝试使用CreateSqlQuery查询一个表并将其转换为包含formula属性的实体时,会出现以下异常

“值不能为空。 参数名称:fieldName“


首先,是否可以对具有公式映射的实体使用createsqlquery

可以将
CreateSQLQuery
与公式一起使用

这是一个概念证明。映射(类不难猜测):


这里有一个问题:

var foos = session.CreateSQLQuery(
                   @"
                   select Id          as {foo.Id},
                          Data        as {foo.Data},
                          Data + Data as {foo.Data2}
                   from   Foo
                   ")
                  .AddEntity("foo", typeof(Foo))
                  .List<Foo>();
var foos=session.CreateSQLQuery(
@"
选择Id为{foo.Id},
数据为{foo.Data},
数据+数据为{foo.Data2}
来自富
")
.附录(“foo”,类型(foo))
.List();
如果仔细观察,您会发现我使用的公式与映射中声明的公式不同。NHibernate允许任何操作,只要所有属性都在查询中


我建议你阅读以下几点。

经过多次搜索,我发现了以下几点

似乎这是hibernate中的一个真正的bug,他们决定不修复它。有一些变通办法。我认为最好是使用别名作为属性名。别名必须按此处所述使用:


您的解决方案似乎只是解决了一个真正存在的bug。@GaryB如果您认为有bug,请随时在跟踪器中打开一个问题,确保包含一个失败的单元测试,这是公平的。我不熟悉Nhibernate和Hibernate问题跟踪之间的关系。我说这是一个bug,因为它在Hibernate中被声明为bug,但显然不在Nhibernate中,所以我称它为关于Nhibernate的bug是不完全公平的。目前,我对alias解决方案很满意,因此我认为创建Nhibernate问题不符合我的利益。
var foos = session.CreateSQLQuery(
                   @"
                   select Id          as {foo.Id},
                          Data        as {foo.Data},
                          Data + Data as {foo.Data2}
                   from   Foo
                   ")
                  .AddEntity("foo", typeof(Foo))
                  .List<Foo>();