【问题标题】:How to get rid of 'property could not be set to a double value, you must set this property to a non-null value of type decimal'如何摆脱“属性无法设置为双精度值,您必须将此属性设置为十进制类型的非空值”
【发布时间】:2011-07-27 21:51:50
【问题描述】:

我正在尝试让函数导入正常工作。 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;

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • value nullable 也是吗?
    • 存储过程返回的值可以为null,可以。
    【解决方案2】:

    发现问题。舍入操作后,我的存储过程在 Cnt 上缺少强制转换。

    【讨论】:

      【解决方案3】:

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

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

      它对我有用

      【讨论】:

        【解决方案4】:

        我遇到了这个问题,我的问题是在 DB 上,类型是真实的,并且在 EF 类中被声明为十进制。我只是将 DB 类型更改为 real 并解决了问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-18
          • 1970-01-01
          相关资源
          最近更新 更多