Я пытаюсь понять вывод NHibernate SQL для этого объекта:NHibernate LINQ BIGINT литья
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>
То же самое, если вы отбрасываете 'type = 'System.Int64, mscorlib" 'из вашего сопоставления? – Rippo
@Rippo: да, я добавил, что позже, чтобы узнать, не изменит ли это что-либо. Я также создал схему DB, используя NHibernate, прежде чем добавить это, и столбец был создан как «bigint». Кроме того, 'not-null', похоже, не влияет на это. Я упрощу его до первой версии. – Groo