2012-07-02 2 views
1

У меня проблема с суммами в Linq to NHibernate (C#). Я не могу получить десятичные части любых итогов. Поле, которое я хочу суммировать в моем бизнес-объекте, является C# decimal, а отображаемое поле в базе данных - DECIMAL (8,2)NHibernate Sum всегда округляет до целого числа

Сумма не вызывает никаких исключений, но я получаю только целое число (I проверяется с помощью SQL в базе данных, а сумма имеет десятичные числа).

Моего свободное отображения этого поле является:

Map(x => x.Importe).Column("importe").Nullable().CustomSqlType("DECIMAL(10,2)"); 

Я попытался с этими выражениями и соответствующих них без броска (десятичного) и я получаю всегда один и тот же результат (извини мои бизнес-объекты находятся на испанском языке, "импортирует" переводится как "количество", и "Вейл" в какой-то вроде "ваучера" =)

var total1 = (from vale in session.Query<Vale>() 
       select vale).Sum(c => c.Importe); 

    var total2 = (from vale in session.Query<Vale>() 
       select vale.Importe).Sum(); 

    var total3 = (from vale in session.Query<Vale>() 
       select new { vale.Importe }).Sum(c => c.Importe); 

и литье в десятичную (и десятичный):

var total1 = (from vale in session.Query<Vale>() 
       select vale).Sum(c => (decimal) c.Importe); 

    var total2 = (from vale in session.Query<Vale>() 
       select (decimal) vale.Importe).Sum(); 

    var total3 = (from vale in session.Query<Vale>() 
       select new { vale.Importe }).Sum(c => (decimal) c.Importe); 

Выход SQL всегда одинаков:

SELECT CAST(SUM(vale0_.importe) AS DECIMAL) AS col_0_0_ FROM vales vale0_ 

Проблема я думаю, что это «AS DECIMAL», потому что я послал этот SQL, но с «AS DECIMAL (8,2)», и я получил правильный результат, но я не знаю, как заставить NHibernate генерировать правильный SQL.

Я попытался добавить .CustomSqlType ("DECIMAL (10,2)") в поле сопоставления и/или с использованием .Precision (8) .Scale (2) в отображении тоже, но ничего.

Я использую FluentNHibernate с NHibernate 3.2.0.4000 и MySQL 5.5.19

ответ

2

Это может быть связано с NH-2347, ошибка я нашел в NH 3.0 и было зафиксировано в 3.3.0.

Попробуйте обновить до последней версии.

+0

Thanks Diego! (Грейсиас Диего!) Я попробую – toledomatias

 Смежные вопросы

  • Нет связанных вопросов^_^