如何摆脱'属性不能设置为双精度值,您必须将此属性设置为decimal'类型的非空值

本文关键字:设置 属性 decimal 类型 空值 不能 何摆脱 双精度 | 更新日期: 2023-09-27 18:03:50

我试图让一个函数导入正确工作。EF调用我的存储过程,但是结果有一个我不理解的内部异常:

var result = context.SomeFunctionImport();

:

someeclass的'Cnt'属性不能设置为'Double'价值。必须将此属性设置为类型的非空值"小数"。

这是SomeClass上的Cnt属性:

    [DataMember]
    public Nullable<decimal> Cnt
    {
        get { return _cnt; }
        set
        {
            if (_cnt != value)
            {
                OnComplexPropertyChanging();
                _cnt = value;
                OnPropertyChanged("Cnt");
            }
        }
    }
    private Nullable<decimal> _cnt;

如何摆脱'属性不能设置为双精度值,您必须将此属性设置为decimal'类型的非空值

您需要这样定义它:public decimal Cnt

找到问题。我的存储过程在舍入操作后缺少对Cnt的强制转换。

我认为这个字段是浮动类型在您的数据库表。所以你要把它设成两倍?如果此字段可为空或使用双

public double? field_name {get; set}
// or 
public double field_name {get; set}

我有这个问题,我的问题是,在DB上,类型是真实的,在EF类被声明为十进制。我只是把DB类型改为real,问题就解决了。