C# NHibernate/Oracle:如何在二进制双列中插入大数字?

C# NHibernate/Oracle:如何在二进制双列中插入大数字?,c#,oracle,nhibernate-mapping,ora-01426,C#,Oracle,Nhibernate Mapping,Ora 01426,我有一个C System.Double属性,它可能包含1e250这样的值: public virtual double DoubleValue {get; set;} 该属性映射到一个二进制双精度列: <property name="DoubleValue" column="VALUE_BINARY_DOUBLE"/> FOR EACH ROW BEGIN :NEW.VALUE_BINARY_DOUBLE := TO_BINARY_DOUBLE(:NEW.VALUE_BI

我有一个C System.Double属性,它可能包含1e250这样的值:

public virtual double DoubleValue {get; set;}
该属性映射到一个二进制双精度列:

<property name="DoubleValue" column="VALUE_BINARY_DOUBLE"/>
FOR EACH ROW
BEGIN
    :NEW.VALUE_BINARY_DOUBLE := TO_BINARY_DOUBLE(:NEW.VALUE_BINARY_DOUBLE);
END;
二进制_Double的最大值约为1.7e+308,但我得到一个例外: ORA-01426:数字溢出

即使在通过SQL+执行查询时也会出现问题。我必须使用to_BINARY_双cast使其工作。在我的理解中,提供的数字被隐式转换为一个数字:我的查询可以使用1e125,最大值为1e126,但不能使用1e250

我也尝试过这些映射,但没有成功:

<property name="DoubleValue" column="VALUE_BINARY_DOUBLE" type="System.Double"/>
<property name="DoubleValue" column="VALUE_BINARY_DOUBLE" type="binary"/>
使用:Oracle11g-NHibernate2.1.0-.NET3.5SP1


感谢您提供的任何线索

以下是我们正在使用的解决方案,因为我们没有找到任何解决方案: 在C中添加属性:

public virtual string DatabaseDoubleValue
{
    get
    {
        return DoubleValue.ToString();
    }
    set
    {
        DoubleValue = double.Parse(value);
    }
}
将映射更改为

<property name="DatabaseDoubleValue" column="VALUE_BINARY_DOUBLE"/>
那样很好