.NET Int16限制小于Oracle中的NUMBER(5,0)限制

时间:2018-12-19 16:28:27

标签: c# oracle entity-framework-core

根据this documentation,Oracle建议将public列映射到NUMBER(5, 0)。但是我意识到Int16的范围是Int16,但是-32,768 to +32,767的范围是NUMBER(5, 0)。那么在这种情况下使用-99999 to 99999真的是最佳实践吗?

我知道,如果我所有的数据都通过.NET代码流入数据库,那么我将把该列有效地限制为Int16,应该没有问题,但是如果插入另一个应用程序该怎么办?在此列中输入Int16的值,然后我读取并中断了我的应用程序,因为它不适合99999?我只是在寻找最佳做法/建议,谢谢。

我已经研究过Which .NET data type is best for mapping the NUMBER Oracle data type in NHibernate?,它涉及整个Int16数据类型,但是我想问一个NUMBER数据类型。

1 个答案:

答案 0 :(得分:1)

您可以使用检查约束来验证number(5,0)的列是否适合int16的边界。

 alter table your_table add constraint your_col_int16_ck 
     check ( your_col >= -32768 and your_col <= 32767 )

这将验证来自您应用程序的数据,并保护您免受他人通过其他媒介针对您的表格发布DML的攻击。<​​/ p>