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

有帮助吗?

解决方案

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

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

其他提示

有点偏离主题,但这是每个人在 SQLServer 中使用 Money 类型时都应该知道的事情。

您不想使用双精度数,而是想使用小数。

Double 是长浮点数,浮点算术不应该用于金融计算。

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

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

您可能认为损失千分之一美分是微不足道的,但当您用别人的钱工作时,情况就不同了。

使用系统十进制。

非常确定 Money 映射到 System.Decimal

检查这里

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top