【发布时间】:2017-04-07 08:13:37
【问题描述】:
我创建了我的表格,我的列区域之一是 Number(5),
PROJECT_CODE NUMBER(5) NOT NULL ,
当我在 c# 中将它集成到我的模型中时,它看起来像;
public global::System.Int16 PROJECT_CODE
我的问题是为什么它会进入 Int16,因为 int16 表示短,最大值是 "32767",如果我的值是 32768,oracle 可以,但是 c# 呢?
【问题讨论】:
-
那为什么不改成
NUMBER(6)或者根本不指定长度呢? -
Oracle
Number(5)是 BCD 与-99999..99999范围和净 整数值 之间没有直接对应关系:Int16有 @ 987654327@ 或Int32有-2147483648..2147483647。一些妥协是不可避免的。 -
这将自动映射到类型,由可以容纳该值的数据提供者完成,对于 32768,它将开始映射到 Int32,因为 Int16 不能再容纳该值
-
@Jenny 不是这样,以防它可以灵活决定Type,否则如果你尝试用Short(Int16)填充32768,会导致错误
-
@Jenny 理想情况下,您应该使用符合您要求的类型,代码生成在那里可能做得不好