2012-03-15 9 views
3

キャストNHibernateはLINQ BIGINT私はこのエンティティのNHibernateはSQL出力を理解しようとしています

select cast(max(person0_.Number) as BIGINT) as col_0_0_ from Person person0_ 

Numberの列がの場合、キャストが必要な理由とにかく?私はNHibernateは3.2、SQL Server 2008 R2を使用しています

、として定義されたマッピングは次のとおりです。

<class name="NhMappingTest.Person, NhMappingTest"> 
     <id name="Id"><generator class="increment" /></id> 
     <property name="Number" /> 
</class> 
+0

マッピングから 'type =" System.Int64、mscorlib "'を削除しても同じですか? – Rippo

+0

@Rippo:はい、後で追加して何かが変更されるかどうかを確認しました。私はこれを追加する前にNHibernateを使ってDBスキーマを作成し、カラムは 'bigint'として作成されました。また、 'not-null'はこれに影響を与えないようです。私は最初のrepro版に簡素化します。 – Groo

答えて

1

をそれはを必要としません。実装の詳細:

protected HqlTreeNode VisitNhMax(NhMaxExpression expression) 
{ 
    return _hqlTreeBuilder.Cast(
     _hqlTreeBuilder.Max(
      VisitExpression(expression.Expression).AsExpression()), 
      expression.Type); 
} 

したがって、コードは結果をブラインドキャストしています。

+0

これはサーバー側のパフォーマンスに影響しない可能性が高いため、私はそれに満足しています。クエリがいくつかの他の側面で実行されなかったので、これが潜在的なバグかどうかを確認したかっただけです。ソースコードをチェックしていただきありがとうございます。 – Groo

関連する問題