我试图理解该实体的 NHibernate SQL 输出:
public class Person
{
public virtual long Id { get; set; }
public virtual long Number { get; set; }
}
当我写的时候:
var maxNumber = s.Query<Person>().Max(p => p.Number);
生成的 SQL 如下所示:
select cast(max(person0_.Number) as BIGINT) as col_0_0_ from Person person0_
如果Number
列无论如何都是bigint
,为什么还需要转换?
我使用的是NHibernate 3.2,SQL Server 2008 R2,映射定义如下:
<class name="NhMappingTest.Person, NhMappingTest">
<id name="Id"><generator class="increment" /></id>
<property name="Number" />
</class>
最佳答案
这不是需要。这是一个实现细节:
protected HqlTreeNode VisitNhMax(NhMaxExpression expression)
{
return _hqlTreeBuilder.Cast(
_hqlTreeBuilder.Max(
VisitExpression(expression.Expression).AsExpression()),
expression.Type);
}
因此,代码会盲目地转换结果。
关于sql - NHibernate LINQ BIGINT 类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9720105/