我正在使用Entity Framework和MS SQL Server 2008.似乎Entity Framework总是将十进制实体属性舍入为最接近的整数,这真的很烦人。你以前见过这个问题,你的解决方案是什么?谢谢!
答案 0 :(得分:2)
我遇到了同样的问题。我使用EF与SQL Server 2008 SP1。我使用存储过程来查询一些数据。另一个烦人的事情是,如果我为存储过程创建函数导入,EF在上下文类中提供一个函数来调用该sp,但对我来说,它没有。所以我创建自己的函数来调用sp。在该函数中,我通过提供DBType.Decimal来创建EntityParameters。但是这个精度和比例的结果设置为0.当我设置正确的数字,因为我的数据库架构需要(3和1顺便说一句),一切都很好。
泽索特
答案 1 :(得分:0)
如果没有提供映射类和数据库模式,我只能假设在其中一个中你使用的是Int或者设置为零精度小数位的东西。
还值得一提的是您正在使用的EF(实体框架)版本。
答案 2 :(得分:0)
不应该是简短的答案。
与蒂莫西所说的相似,可能发生以下情况之一:
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.
截断答案的语言(不是圆形)所以如果你想要准确,你需要将变量转换为双精度或小数。