首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OverflowException与dotConnection PostgreSQL

OverflowException与dotConnection PostgreSQL
EN

Stack Overflow用户
提问于 2014-08-06 12:05:57
回答 1查看 259关注 0票数 0

我使用dotConnect for PostgreSQL,proffesional从数据库中创建了模型。一切正常,实体之一例外。一些属性以十进制形式生成。Entity中的示例属性

代码语言:javascript
复制
public global::System.Nullable<decimal> CollectionToPay
{
    get
    {
        global::System.Nullable<decimal> value = _CollectionToPay;
        OnGetCollectionToPay(ref value);
        return value;
    }
    set
    {
        if (_CollectionToPay != value)
        {
          OnCollectionToPayChanging(ref value);
          ReportPropertyChanging("CollectionToPay");
          _CollectionToPay = StructuralObject.SetValidValue(value);
          ReportPropertyChanged("CollectionToPay");
          OnCollectionToPayChanged();
      }
    }
}

private global::System.Nullable<decimal> _CollectionToPay;

当我尝试获取实体集合时,我得到了一个错误:

System.OverflowException类型的第一次例外发生在Devart.Data.PostgreSql.dll中 附加信息:对于一个十进制来说,值要么太大要么太小。

我甚至不知道哪一排棺材出了问题。我拿了大约400行。有什么快速确定问题行的方法吗?表大约有170列,大约20列是十进制类型的。我已经在pgAdmin中获取了行,但是没有值看起来太大/太小。我能做什么?我想我会将decimal更改为double,但首先我需要找到有问题的行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-06 12:24:57

是有界类型。:这是一个128位的固定大小值.这大概是一个decimal128或类似的。

这并不等同于类型,我猜想这就是您要映射到的。(如果你给我看这个就好了)。numeric是任意精度和尺度二进制编码的十进制.它的实际限制是1GB左右,但这是如此巨大,它是一个难以想象的数字。

您不能将任何可能的numeric存储在C#的Decimal中,您的应用程序可能包含不能存储在Decimal中的值。

您可能需要在C#中找到二进制编码的十进制数据类型实现,或者调整数据以消除超出范围的值。

如果向numeric列添加CHECK约束以限制其值范围,则可以将CHECK映射到numeric。就我个人而言,我建议使用DOMAIN类型来完成此操作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25159972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档