我使用dotConnect for PostgreSQL,proffesional从数据库中创建了模型。一切正常,实体之一例外。一些属性以十进制形式生成。Entity中的示例属性
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,但首先我需要找到有问题的行。
发布于 2014-08-06 12:24:57
是有界类型。:这是一个128位的固定大小值.这大概是一个decimal128或类似的。
这并不等同于类型,我猜想这就是您要映射到的。(如果你给我看这个就好了)。numeric是任意精度和尺度二进制编码的十进制.它的实际限制是1GB左右,但这是如此巨大,它是一个难以想象的数字。
您不能将任何可能的numeric存储在C#的Decimal中,您的应用程序可能包含不能存储在Decimal中的值。
您可能需要在C#中找到二进制编码的十进制数据类型实现,或者调整数据以消除超出范围的值。
如果向numeric列添加CHECK约束以限制其值范围,则可以将CHECK映射到numeric。就我个人而言,我建议使用DOMAIN类型来完成此操作。
https://stackoverflow.com/questions/25159972
复制相似问题