C# 如何摆脱';属性无法设置为双精度值,必须将此属性设置为decimal';
我正在尝试使函数导入正常工作。EF调用我的存储过程,但结果有一个我不理解的内部异常: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
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}
它对我起作用了值也可以为空吗存储过程返回的值可以为空,是的。