Сведения о вопросе

nikolya

15:09, 29th August, 2020

Теги

linq   linq-to-sql   orm    

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

Просмотров: 477   Ответов: 3

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



  Сведения об ответе

lesha

05:34, 25th August, 2020

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

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

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

Подумайте об этом, дроби 1/3, 1/3 и 1/3 равны 1. Однако, при выраженных как двойной, т. е.:

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

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

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


  Сведения об ответе

repe

06:25, 5th August, 2020

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

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


  Сведения об ответе

SEEYOU

08:53, 20th August, 2020

В файл DBML XML, вы можете установить атрибут выражение элемента столбца, чтобы что-то подобное:

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться