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





почти наверняка Money сопоставляется с System.Decimal
В 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. Однако, если выразить это как двойное, то есть:
.3333 + .3333 + .3333 = .9999, а не 1.
Вы можете подумать, что потерять тысячную цента тривиально, но дело обстоит не так, когда вы работаете с чужими деньгами.
Используйте System.Decimal.