oracle11g r2 number数据类型与C#数据类型对应关系

 

经过测试以下数据类型可以对应,如对应有误在转换数据类型时可能会出错:
oracleC#备注
number(1-4)Int16/shot 
number(5-9)Int32/int 
number(10-19)Int64/long雪花ID属性定义为long
number(20-)decimal 

注意:我使用的用雪花ID算法生成的长度为19,C#属性类型定义为long,数据库中长度定义为number(19)即可。

 

开发中遇到两个查询条件  生成SQL的问题(数据库使用oracle 11g r2,程序使用C#,ORM框架使用EF):

数据库中字段类型:

CREATE TABLE test
(
  a VARCHAR2(10 BYTE)   --对应的属性为字符串
, b  number(10) --对应的属性是 枚举类型
}

实体类:

public class test{
  
  public string a{get;set;}
  public E_C b{get;set;}
}

//枚举
enum E_C{
   one=1,
   two=2
}

问题1、以字符串a字段查询,字段定义为字符串,如果查询的参数值是:0-9,那么EF生成的sql中值不带引号,如 :where a=1,正常应生成:a='1'

问题2、以枚举字段b查询,生成的SQL是:  where cast(b as number(10, 0))=1, 其中多了一个cast的转换过程,期望生成的sql是这样的:where b=1

以上两个问题如有解决方案,请留言指点如何解决!!或加我微信:gbcore

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值