Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/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
Entity framework 实体框架是否将十进制值舍入为最接近的整数?_Entity Framework_Sql Server 2008 - Fatal编程技术网

Entity framework 实体框架是否将十进制值舍入为最接近的整数?

Entity framework 实体框架是否将十进制值舍入为最接近的整数?,entity-framework,sql-server-2008,Entity Framework,Sql Server 2008,我正在使用实体框架和MS SQL Server 2008。实体框架似乎总是将十进制实体属性四舍五入到最接近的整数,这真的很烦人。你以前见过这个问题吗?你的解决方案是什么?谢谢 如果不提供映射类和数据库模式,我只能假设其中一个使用Int或设置为零精度小数点的东西 同样值得一提的是,您使用的是哪个版本的EF(实体框架)。简单的回答是,不应该这样做 与Timothy所说的类似,可能发生了以下情况之一: 生成的某个类的属性被定义为int,而列是decimal-您可以通过在实体设计器中更改实际类型来实现

我正在使用实体框架和MS SQL Server 2008。实体框架似乎总是将十进制实体属性四舍五入到最接近的整数,这真的很烦人。你以前见过这个问题吗?你的解决方案是什么?谢谢

如果不提供映射类和数据库模式,我只能假设其中一个使用Int或设置为零精度小数点的东西


同样值得一提的是,您使用的是哪个版本的EF(实体框架)。

简单的回答是,不应该这样做

与Timothy所说的类似,可能发生了以下情况之一:

  • 生成的某个类的属性被定义为int,而列是decimal-您可以通过在实体设计器中更改实际类型来实现这一点
  • 在代码的某个地方,您使用的是整数而不是小数。特别是,如果使用
    var
    使用隐式类型,编译器可能会推断整数类型而不是十进制类型
举例说明第二点:

var myNumber = 100;    // myNumber will be an int

myNumber = myNumber / 3;    // myNumber == 33 (an int)

你能发布一些代码给我们一个更好的主意吗?

我遇到了同样的问题。我将EF与SQLServer2008SP1一起使用。我使用存储过程来查询一些数据。另一件恼人的事情是,如果我为存储过程创建函数导入,EF会在上下文类上提供一个函数来调用该sp,但对我来说,它不会。因此,我创建了自己的函数来调用sp。在该函数中,我通过提供DBType.Decimal来创建EntityParameters。但这会导致精度和比例设置为0。当我按照DB模式的要求(3和1 btw)设置正确的数字时,一切都正常

zsolt在C#中,int/int=int

10/2=5,10/3=3


使用truncate的语言会截断答案(不是四舍五入),因此如果要获得准确的答案,需要将变量转换为双精度或小数

你可以这么想,但你错了。我看到了同样的问题…一年多以后,只使用EF代码CTP5。