C# 如何摆脱';属性无法设置为双精度值,必须将此属性设置为decimal';

C# 如何摆脱';属性无法设置为双精度值,必须将此属性设置为decimal';,c#,entity-framework,stored-procedures,entity-framework-4,C#,Entity Framework,Stored Procedures,Entity Framework 4,我正在尝试使函数导入正常工作。EF调用我的存储过程,但结果有一个我不理解的内部异常: var result = context.SomeFunctionImport(); 我得到: “SomeClass”上的“Cnt”属性无法设置为“Double” 价值必须将此属性设置为类型为的非空值 “十进制” 以下是SomeClass上的Cnt属性: [DataMember] public Nullable<decimal> Cnt { get { re

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

var result = context.SomeFunctionImport();
我得到:

“SomeClass”上的“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;
[DataMember]
公共可空Cnt
{
获取{return\u cnt;}
设置
{
如果(_cnt!=值)
{
OnComplexPropertyChange();
_cnt=值;
不动产变更(“Cnt”);
}
}
}
私有可空的_cnt;

您需要这样定义它:
公共十进制Cnt
找到了问题。在舍入操作之后,我的存储过程在Cnt上丢失了一个强制转换。

我遇到了这个问题,我的问题是在DB上,类型是real,在EF类中声明为decimal。我刚刚将DB类型更改为real,问题就解决了。

我认为此字段是数据库表中的浮点类型。 所以你需要将它设置为两倍?如果此字段可为空,或者使用double

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

它对我起作用了

值也可以为空吗存储过程返回的值可以为空,是的。