怎样判断Oracle数据库的字段为布尔值
最近在做c#生成实体类的工具,通常Oracle表示bool的时候使用char(1)或number代替。现在想要知道这的字段是否为bool值,我该怎么判断呢?比如一张表如下:
姓名 性别
-------------------
张三 0
李四 1
王五 1
最终想生成的代码效果:
public string Name{get;set}
public bool Sex {get;set;}
我想到的:
1.做法是判断性别列只有两种值0或1,这时候就基本可以肯定是bool,但是没数据情况下就不可使了。
2.或者增加检查约束,只能有0或1,这样子就更保险。
各位大侠还有其它办法判断字段为bool值吗?
注:我做的代码生成器也没太多意义,只是想研究一下而已,望大家不要拍砖,谢了。 EF Oracle 实体 代码生成器 --------------------编程问答-------------------- 你想到的也差不多了,没有规则就没法自动化。这种表设计就是不好,让用户选择一下吧。 --------------------编程问答-------------------- 其实你没必要判断是不是bool类型,你生成的属性用枚举就可以了
public enumSex Sex{get;set;}
public enum enumSex
{
男=0,
女=1
} --------------------编程问答-------------------- 可能楼主有点完美主义倾向,你想到的已经够了 --------------------编程问答--------------------
表设计有问题吗?那该怎么设计呢? --------------------编程问答-------------------- 我的意思从类型上是没法判断是否bool类型,可以在字段名上规范一下,比如约定bool型数据用Is作前缀。另外程序辅助判断,生成模型时让用户选择是否是逻辑量。 --------------------编程问答-------------------- Oracle不支持bool类型的数据,因此就假定number(1)为bool类型的,也只能用该类型存储bool的值,char(1)肯定不行,因为字符的范围太大了。如果要更智能,就只能通过备注里加限制说明。
其实即使你错误的把一个允许0~9范围的输入设置为了只能0、1的输入,也没事,最终产生的实体类是需要微调的,只要允许微调即可。
楼上说的枚举更加麻烦,实体类对枚举的创建不能一步到位,这个我做过(生成器),因为麻烦,所以对于枚举我目前是手动改,自动的没添加,因为需要先产生枚举类型,而这个枚举类型又可能重用,所以麻烦。 --------------------编程问答--------------------
好主意,正打算是做可以人工选择数据类型的
补充:.NET技术 , C#