LINQ to SQL映射从Money到Double

时间:2008-08-19 14:27:09

标签: linq linq-to-sql orm

我第一次使用LINQ并希望在SQL中有钱类型时使映射工作,但我的域对象属性是double类型。我如何在XML文件或代码中表达这一点,以便映射不会抛出通常的“无效转换”异常?

3 个答案:

答案 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

Check here

答案 2 :(得分:1)

在DBML XML文件中,您可以将Column元素的Expression属性设置为以下内容:

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