LINQ to SQL Отображение с денег на удвоение

Я впервые работаю с LINQ и хотел, чтобы Mapping работал, когда у меня есть денежный тип в SQL, но мое свойство объекта домена имеет тип double. Как я могу выразить это в файле XML или в коде, чтобы сопоставление не вызывало обычное исключение «неверное приведение»?

19.08.2008 14:27:08
3 ОТВЕТА
РЕШЕНИЕ

В XML-файле DBML вы можете установить для атрибута Expression элемента Column что-то вроде этого:

 <Column Name="Table1.Amount" DbType="smallint" Type="System.Int32" 
         Expression="CAST(Table1.Amount as int)" />
1
23.10.2008 22:29:00

уверен, что деньги отображаются в System.Decimal

Проверьте здесь

1
19.08.2008 14:29:04

Немного не по теме, но это то, что каждый должен знать при работе с типом Money в SQLServer.

Вы не хотите использовать двойное число, вы хотите использовать десятичное число.

Двойной тип является длинным с плавающей точкой, и арифметика с плавающей запятой никогда не должна использоваться для финансовых расчетов.

Подумайте об этом, фракции 1/3, 1/3 и 1/3 равны 1. Однако, когда выражается как двойной, то есть:

.3333 + .3333 + .3333 = .9999 не 1.

Вы можете подумать, что потерять тысячную часть цента тривиально, но это не так, когда вы работаете с кем-то, тратя деньги.

Используйте System.Decimal.

3
6.09.2008 01:38:30