3

我试图让函数导入正常工作。 EF叫一声我的存储过程,但结果有一个内部异常,我不明白:如何摆脱'属性不能设置为双精度值,您必须将此属性设置为十进制类型的非空值'

var result = context.SomeFunctionImport(); 

我得到:

上“SomeClass的”的“CNT”属性不能设置为'Double' 值。您必须将此属性设置为类型为 'Decimal'的非空值。

这里的Cnt财产上SomeClass

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

回答

2

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

2

您需要定义它:public decimal Cnt

+0

我需要它可为空。 –

+0

“价值”也可以为空吗? – Mrchief

+0

从存储过程返回的值可以为null,是的。 –

0

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

2

我觉得这个字段在你的数据库表中是float型的。 所以你需要将它设置为双?如果该字段为空或以其它方式使用双

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

它的工作对我来说

相关问题