代码改变世界

将 Linq to SQl 项目移植到 Linq to Oracle

2011-04-20 17:05  麦舒  阅读(4332)  评论(0编辑  收藏  举报

 

点击这里返回目录

要将 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 的部份。

http://www.alinq.org/CnDocument/Document.aspx?element=T%3a%e5%9b%a0%e6%95%b0%e6%8d%ae%e5%ba%93%e8%80%8c%e5%bc%82%e7%9a%84%e5%8a%9f%e8%83%bd

 

 

点击这里返回目录