我有一个包含 Decimal 公共属性的类(由实体框架生成,代码显示在下方),并且在将其四舍五入为整数时遇到问题。
我正在阅读一个文本文件,并按如下方式解析数字(为清楚起见,大部分代码都被省略了)......
decimal val = decimal.Parse(str);
Transaction t = new Transaction {
Value = val
};
如果我检查 val,我可以看到它包含完整的值,例如 9.99,如果我检查 Value 属性,它是正确的。但是,当对象保存到数据库时,该值会四舍五入到最接近的整数,丢失小数部分。
数据库将字段定义为小数(18,0),EF 对此进行了处理,并为该属性使用了 Decimal 类型。
这是 EF 为属性生成的代码...
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Decimal Value
{
get
{
return _Value;
}
set
{
OnValueChanging(value);
ReportPropertyChanging("Value");
_Value = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Value");
OnValueChanged();
}
}
private global::System.Decimal _Value;
partial void OnValueChanging(global::System.Decimal value);
partial void OnValueChanged();
有人知道出了什么问题吗?