当前位置:编程学习 > C#/ASP.NET >>

怎样判断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
} --------------------编程问答-------------------- 可能楼主有点完美主义倾向,你想到的已经够了 --------------------编程问答--------------------
引用 1 楼 Mackz 的回复:
你想到的也差不多了,没有规则就没法自动化。这种表设计就是不好,让用户选择一下吧。

表设计有问题吗?那该怎么设计呢? --------------------编程问答-------------------- 我的意思从类型上是没法判断是否bool类型,可以在字段名上规范一下,比如约定bool型数据用Is作前缀。另外程序辅助判断,生成模型时让用户选择是否是逻辑量。 --------------------编程问答-------------------- Oracle不支持bool类型的数据,因此就假定number(1)为bool类型的,也只能用该类型存储bool的值,char(1)肯定不行,因为字符的范围太大了。如果要更智能,就只能通过备注里加限制说明。
其实即使你错误的把一个允许0~9范围的输入设置为了只能0、1的输入,也没事,最终产生的实体类是需要微调的,只要允许微调即可。
楼上说的枚举更加麻烦,实体类对枚举的创建不能一步到位,这个我做过(生成器),因为麻烦,所以对于枚举我目前是手动改,自动的没添加,因为需要先产生枚举类型,而这个枚举类型又可能重用,所以麻烦。 --------------------编程问答--------------------
引用 5 楼 Mackz 的回复:
我的意思从类型上是没法判断是否bool类型,可以在字段名上规范一下,比如约定bool型数据用Is作前缀。另外程序辅助判断,生成模型时让用户选择是否是逻辑量。

好主意,正打算是做可以人工选择数据类型的
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,