Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ到SQL从Money到Double的映射_Linq_Linq To Sql_Orm - Fatal编程技术网

LINQ到SQL从Money到Double的映射

LINQ到SQL从Money到Double的映射,linq,linq-to-sql,orm,Linq,Linq To Sql,Orm,我第一次使用LINQ,希望在SQL中有货币类型时使映射工作,但我的域对象属性是double类型。如何在XML文件或代码中表达这一点,以使映射不会引发通常的无效强制转换异常?非常确定Money映射到System.Decimal 非常确定货币映射到系统。十进制 在DBML XML文件中,可以将Column元素的Expression属性设置为如下内容: <Column Name="Table1.Amount" DbType="smallint" Type="System.Int32"

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

非常确定Money映射到System.Decimal


非常确定货币映射到系统。十进制


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

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

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

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

这有点离题,但在SQLServer中使用货币类型时,每个人都应该知道这一点

你不想用双精度,你想用十进制

Double是一个长浮点,浮点运算永远不能用于金融计算

想想看,分数1/3,1/3和1/3等于1。但是,当表示为双ie时:

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

你可能认为损失千分之一的钱是微不足道的,但这并不是你和别人一起工作的时候


使用System.Decimal。

稍微偏离主题,但在SQLServer中使用货币类型时,每个人都应该知道这一点

你不想用双精度,你想用十进制

Double是一个长浮点,浮点运算永远不能用于金融计算

想想看,分数1/3,1/3和1/3等于1。但是,当表示为双ie时:

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

你可能认为损失千分之一的钱是微不足道的,但这并不是你和别人一起工作的时候

使用System.Decimal