1

我是第一次使用 LINQ,当我在 SQL 中有一种货币类型时,我想让映射工作,但我的域对象属性是 double 类型。如何在 XML 文件或代码中表达这一点,以便映射不会引发通常的“无效转换”异常?

4

3 回答 3

3

有点跑题了,但这是每个人在 SQLServer 中使用 Money 类型时都应该知道的。

你不想使用双精度,你想使用小数。

Double 是一个长浮点数,浮点运算永远不应该用于财务计算。

想一想,分数 1/3、1/3 和 1/3 等于 1。但是,当表示为双精度时,即:

.3333 + .3333 + .3333 = .9999 不是 1。

您可能认为损失千分之一是微不足道的,但当您与别人的钱一起工作时,情况并非如此。

使用 System.Decimal。

于 2008-09-06T01:38:30.507 回答
1

很确定 Money 映射到 System.Decimal

在这里检查

于 2008-08-19T14:29:04.490 回答
1

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

 <Column Name="Table1.Amount" DbType="smallint" Type="System.Int32" 
         Expression="CAST(Table1.Amount as int)" />
于 2008-08-19T14:53:49.383 回答