如何摆脱'属性无法设置为double值,必须将此属性设置为decimal类型的非null值'

时间:2011-07-27 21:51:50

标签: c# entity-framework stored-procedures entity-framework-4

我正在尝试让函数导入正常工作。 EF调用我的存储过程,但结果有一个我不明白的内部异常:

var result = context.SomeFunctionImport();

我明白了:

  

'SomeClass'上的'Cnt'属性无法设置为'Double'   值。您必须将此属性设置为类型的非null值   '十进制'。

以下是Cnt上的SomeClass属性:

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

4 个答案:

答案 0 :(得分:2)

您需要像下面这样定义:public decimal Cnt

答案 1 :(得分:2)

发现了这个问题。我的存储过程在舍入操作后错过了Cnt上的强制转换。

答案 2 :(得分:2)

我认为这个字段是数据库表中的float类型。 所以你需要将它设置为双倍?如果此字段可以为空或以其他方式使用双

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

这对我有用

答案 3 :(得分:0)

我有这个问题,我的问题是在DB上,类型是真实的,在EF类中声明为十进制。我刚刚将数据库类型更改为实际并解决了问题。