有关Nhibernate在不同数据库中的移植问题

1sql2000sql2005相差不多

需要更改的只有一个地方: dialect方言改为20002005

2sqlserveroracle相差较多

第一、dialect方言;改为NHibernate.Dialect.Oracle10gDialect

第二、connection.driver_class

改为NHibernate.Driver.OracleClientDriver

第三、添加query.substitutions

值为 true 1, false 0, yes 'Y', no 'N'

第四、oracle数据库表的名称全为大写、且对大小写特别敏感,一定要注意拼写;要把所有HQL语句换为大写

第五、oracle里的数据类型跟sqlserver.net里不大一样,该系统里牵涉到的两个:

一是Guid类型,oracle里没有oracle,网上资料有的提示对应的类型为RAW16)或CHAR38);首先是RAW16)可以跟Guid类型对应,但是数据库表里的值跟从数据库表里读出来显示到网页上的值不一样,因此,在本次日志移植测试时,使用的VCHAR50);就是将Guid类型转换为string字符串类型,传到数据库表中,再将其读出,即可得到一致的数值。

二是DataTime类型,因为oracle里日期的格式根据具体的回话环境而定,一般采用默认形式,跟.net里的不一样,需要做下转换。具体操作如下:

首先、查一下当前oracle的日期格式:默认为08-6-11

其次、要修改sql语句,即在sql语句日期类型的前面加上TO_DATE2011-06-8,'YYYY-MM-DD');注意TO_DATE一定要大写;这样才可以被oracle识别

小结:可能在其他的方面有关oracleNhibernate操作还要修改sql语句,目前没发现持久层是否可以提供一种方式,可以只是修改配置文件不动sql语句,也就是只用HQL语句来完成所有数据库之间的移置

转载于:https://www.cnblogs.com/gpp0922/archive/2011/08/17/2142840.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值