Entity Framework是否将十进制值四舍五入为最接近的整数?

时间:2009-11-30 08:24:12

标签: entity-framework sql-server-2008

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

4 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。我使用EF与SQL Server 2008 SP1。我使用存储过程来查询一些数据。另一个烦人的事情是,如果我为存储过程创建函数导入,EF在上下文类中提供一个函数来调用该sp,但对我来说,它没有。所以我创建自己的函数来调用sp。在该函数中,我通过提供DBType.Decimal来创建EntityParameters。但是这个精度和比例的结果设置为0.当我设置正确的数字,因为我的数据库架构需要(3和1顺便说一句),一切都很好。

泽索特

答案 1 :(得分:0)

如果没有提供映射类和数据库模式,我只能假设在其中一个中你使用的是Int或者设置为零精度小数位的东西。

还值得一提的是您正在使用的EF(实体框架)版本。

答案 2 :(得分:0)

不应该是简短的答案。

与蒂莫西所说的相似,可能发生以下情况之一:

  • 您生成的某个类的属性被定义为int而列是小数 - 您可以通过更改实体设计器中的实际类型来实现此目的
  • 在代码中的某处,您使用的是int而不是小数。特别是,如果您使用var进行隐式类型编译,编译器可能会推断出整数类型而不是小数类型

澄清第二点的一个例子:

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

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

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

答案 3 :(得分:0)

在C#中,int / int = int

10/2 = 5,10 / 3 = 3.

截断答案的语言(不是圆形)所以如果你想要准确,你需要将变量转换为双精度或小数。