首页 > 解决方案 > 限制长的大小?

问题描述

我在(oracle)数据库中有一个表,其中有一列NUMBER(12). 我不能int在 C# 中使用,因为它很小,所以我使用long. 但是long对于这个表列来说太大了。long在将数据发送到数据库之前,有什么方法可以限制 a 的大小?否则我会得到一个错误 ORA-21525,因为我超出了表格列的大小。发送到数据库的数据实际上是一个List<long>.

标签: c#.netoracle.net-framework-4.8

解决方案


最明显的解决方案是使用自定义数字类型来限制数字的值范围。就像是

public readonly struct Number12{
    public long Value {get;}
    public Number12(long num){
        if(num > 999999999999 || num < -999999999999 ){
           throw new ArgumentException("number out of rage " +num);
        }
        Value = num;
    }
   // Add operators, conversions etc
}

这样做的一个好处是,很明显这个数字有一些特殊的规则。但是使用起来会比较麻烦,如果以后改数据库可能会出问题。


推荐阅读