LINQ to SQL Отображение с денег на удвоение - PullRequest
1 голос
/ 19 августа 2008

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

Ответы [ 3 ]

3 голосов
/ 06 сентября 2008

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

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

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

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

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

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

Использовать System.Decimal.

1 голос
/ 19 августа 2008

В файле XML DBML вы можете установить атрибут Expression элемента Column примерно так:

 <Column Name="Table1.Amount" DbType="smallint" Type="System.Int32" 
         Expression="CAST(Table1.Amount as int)" />
1 голос
/ 19 августа 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...