要将 Linq to SQL 的项目移植到 Oracle 数据库,首选当然是使用 ALinq 了。
如果你还末接触过 ALinq ,在进行移植前,建议你先看看下面这个系列的文章:
Linq to Oracle 使用教程目录
如果你已经看过了,那么就可以开始了。
准备工作 转换数据库,也就是先把 MS SQL 数据库转换成 Oracle 数据库。我们都知道, Oracle 数据一般来说,是不区分大小写的,所以一般采用下划来分隔单词。那么在导数据库的时候,就有可能出现两种情况,
a. 保持原来的表字,字段名不变。比如说表名 EmployeeTerritories 转换后变成 EMPLOYEETERRITORIES,字段名 EmployeeID 变成了 EMPLOYEEID 。
b. 对表名、字段名重新命名,用下划线来分隔单词。EmployeeTerritories 转换后变成 EMPLOYEE_TERRITORIES,字段名 EmployeeID 变成 EMPLOYEE_ID。(建议采用这种方法转换数据库)
下面就根据这两种情分别介绍移植的步骤:
情况 a :
1、把 *.dbml 文件名改为 *.admf 文件,MSLinqToSQLGenerator 改为 ALinqCodeGenerator 并重新生成代码。
注意:储存过程无法转换。
2、修改连接字符串和 Provider,把 Provider 设为 Oracle ,下图仅供参考:
3、修改表名,例如:把 dbo.Categories 改为 Categories。
4、修改字段的 Server Type 属性。
友情提示:
如果表比较多,可以考虑写个小程序,直接读取 XML 格式的 admf 文件,然后在程序里修改。毕竟手工逐个修改还是挺麻烦的。
情况 b :
对于 b 情况,就简单多了,只需要重新建模就行了。
1、把原来的 dbml 文件都删除,因为我们需要重新建模。
2、新建一个 *admf 文件,然后把表拖到设计器上去。
在建模前,请确定 Remove_Underscores 已经设为 True。菜单:Tools -> Options -> ORDesigner -> General
Remove_Underscores 设为 True 的作用是去掉表名、字段名的下划线,如:EMPLOYEE_TERRITORIES 变成 EmployeeTerritories ,EMPLOYEE_ID 变成 EmployeeID 。
如下图:
重将建模后,接着就是编译,调试了。如果没有存储过程,基本上是可以百分百的转换的。在转换的使用的过程中,有任何疑问,都可以和我联系。
关于自增长列的转换请查看下面这篇文章中,关于 Oracle 的部份。