SNF平台从sql server兼容oracle的处理方式和开发方式
前幾天有這樣一個需求,就是讓SNF平臺BS版的基礎程序全面支持Oracle數(shù)據(jù)庫。
初一看這是一個很大的工程,因為大家都知道 Sql和Oracle的語法有很多的不一樣,如 top 、日期獲取、類型之間、特殊的關鍵字如sqlserver中會用到 dbo.、[]號都不行、自動增長、分頁查詢等。所以要兼容在設計時就應該做處理。
???????? 那在SNF快速開發(fā)平臺設計時就考慮了這個問題,所以我們花了3天的時間從沒有Oracle數(shù)據(jù)庫 現(xiàn)搭環(huán)境,現(xiàn)創(chuàng)建表空間、現(xiàn)創(chuàng)建表結構導數(shù)據(jù),創(chuàng)建序列,甚至把原來用的C#連接oracle的dll庫也升級了一下。表結構的問題用工具Navicat->數(shù)據(jù)傳輸功能 幫助解決的,傳輸過去有一個問題就是表名和字段名加上了””號,再第一次運行程序時發(fā)現(xiàn)了問題,統(tǒng)一進行了導出腳本把””去掉再執(zhí)行問題。數(shù)據(jù)庫升級完后我們還需要進行程序的調整,還好框架兼容和擴展性比較好,整個測試后發(fā)現(xiàn) 10~20處不符合需要一一進行了調整,也是滿艱辛的。
???????? 經(jīng)過調整后在SNF框架下開發(fā)的時候要注意以下幾點:
?
再開發(fā)新程序時,想要利用我們的代碼生成器等工具做來的話的開發(fā)步驟如下(指BS程序):
a)???????? 采用Navicat->數(shù)據(jù)傳輸功能把表結構復制過去,再Navicat里把表結構導出去掉””號,再創(chuàng)建表結構。也把對應的默認值也處理一下。
b)???????? 如果是自增長的話需要創(chuàng)建一個序列號,序列號名為“seq_表名”。這樣生成的代碼就可以兼容。
c)???????? 還需要向BaseTranslation表增加字段翻譯,用于翻譯Oracle大寫字段和Sql server Pascal大小寫字段名的問題。DataTable是不區(qū)分大小寫的不用管。但在頁面綁定字段和js取值等地都會有用。為了一次開發(fā)多數(shù)據(jù)庫支持我們需要處理。
注:翻譯后頁面使用的是Pascal大小寫字段名。如:Id、ParentId、SortCode等。
?
下面SQL腳本,作用是檢索出來所有表字段和Pascal大小寫和全大寫字段名稱。放到翻譯表。
?
Insert into BaseTranslation
select distinct [name], upper([name] ) from [syscolumns] where [id] in(
select [id] from [sysobjects] where [type] = 'u'
)
union
select distinct [name], upper([name] ) from WorkFlowV30. dbo.[syscolumns] where [id] in(
select [id] from WorkFlowV30.dbo .[sysobjects] where [type] = 'u'
)
union
select distinct [name], upper([name] ) from ProjectV30. dbo.[syscolumns] where [id] in(
select [id] from ProjectV30.dbo .[sysobjects] where [type] = 'u'
)
select * from BaseTranslation
?
再附贈一個Oracle備份和還原腳本:
exp SYSTEM/orcl@192.168.2.50:1521/orcl file=d:\snf_oracle.dmp;
?
exp platform/platform@192.168.2.50:1521/orcl file=d:\snf_oracle_platform.dmp;
作者: 王春天 2015-11-23作者Blog:http://www.cnblogs.com/spring_wang
? 如果覺得還不錯,歡迎轉載。
本系列文章列表如下:
基于SNF-快速開發(fā)平臺框架的系列文章:
SNF快速開發(fā)平臺3.2之--.Net可擴展的單據(jù)編號生成器-SNF.CodeRule
SNF快速開發(fā)平臺3.1之--審核流(3)低調奢華,簡單不凡,實例演示-SNF.WorkFlow
SNF快速開發(fā)平臺3.1之--審核流(2)流程設計-SNF.WorkFlow功能使用說明
SNF快速開發(fā)平臺3.1之--審核流(1)SNF.WorkFlow審核流簡介
SNF快速開發(fā)平臺3.0之--完美的代碼生成器SNF.CodeGenerator-快速開發(fā)者的利器
基于MVC4+EasyUI的Web開發(fā)框架--Spring.Net.FrameworkV3.0總體介紹
SNF快速開發(fā)平臺3.0之--MVC 打印解決方案
SNF快速開發(fā)平臺3.0之--文件批量上傳-統(tǒng)一附件管理器-在線預覽文件(有互聯(lián)網(wǎng)和沒有兩種)
SNF快速開發(fā)平臺3.0之--asp.net mvc4 強大的導出和不需要上傳文件的批量導入EXCEL
SNF快速開發(fā)平臺3.0之MVC通用控件庫展示-Asp.net+MVC4.0+WebAPI+EasyUI+Knockout
SNF快速開發(fā)平臺3.0之BS頁面展示和九大優(yōu)點-部分頁面顯示效果-Asp.net+MVC4.0+WebAPI+EasyUI +Knockout
SNF快速開發(fā)平臺3.0之-界面?zhèn)€性化配置+10種皮膚+7種菜單-Asp.net+MVC4.0+WebAPI+EasyUI+Knockout
SNF快速開發(fā)平臺3.0之-CS頁面-Asp.net+Spring.Net.Framework
SNF快速開發(fā)平臺3.0之--系統(tǒng)里廣播的作用--迅速及時、簡明扼要的把信息發(fā)送給接收者
?
轉載于:https://www.cnblogs.com/spring_wang/p/5722706.html
總結
以上是生活随笔為你收集整理的SNF平台从sql server兼容oracle的处理方式和开发方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 七种常见的核酸序列蛋白编码能力预测工具
- 下一篇: 函数之内置函数1