我第一次使用LINQ并希望在SQL中有钱类型时使映射工作,但我的域对象属性是double类型。我如何在XML文件或代码中表达这一点,以便映射不会抛出通常的“无效转换”异常?
答案 0 :(得分:3)
稍微偏离主题,但在SQLServer中使用Money类型时,每个人都应该知道这一点。
你不想使用double,你想使用小数。
Double是一个long float,浮点算术永远不应该用于财务计算。
想到这一点,分数1 / 3,1 / 3和1/3等于1.但是,当表示为双重时,即:
.3333 + .3333 + .3333 = .9999不是1.
你可能会认为失去千分之一的分数是微不足道的,但当你与某人一起工作时,并不是这样。
使用System.Decimal。
答案 1 :(得分:1)
非常确定Money映射到System.Decimal
答案 2 :(得分:1)
在DBML XML文件中,您可以将Column元素的Expression属性设置为以下内容:
<Column Name="Table1.Amount" DbType="smallint" Type="System.Int32"
Expression="CAST(Table1.Amount as int)" />