Вопрос

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

Это было полезно?

Решение

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

 <Column Name="Table1.Amount" DbType="smallint" Type="System.Int32" 
         Expression="CAST(Table1.Amount as int)" />

Другие советы

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

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

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

Подумайте вот о чем: дроби 1/3, 1/3 и 1/3 равны 1.Однако, если выразить это как двойной т.е.:

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top