之前用EF操作oracle数据库时用的是dotConnect for Oracle------是一款为Microsoft.NETFramework提供直接Oracle数据库连接的数据发生器控件。它完全基于ADO.NET方法,因此您完全可以采用标准ADO.NET数据提供的方法来使用它。用起来确实是不错,但是这款是付费产品最后不得已抛弃了,想体验下的可以下载免费使用30天,下载地址http://www.devart.com/dbforge/oracle/

        最近又打算测试下EF操作oracle,特将研究过程中遇到的问题和解决方法以及如何让Oracle也支持EF的详细步骤给大家分享下,另外会附上步骤中所需要的文件以及修改后的EFOracleProvider的源文件,修改后的EF支持oracle9i也支持char、timestamp(x)等类型

        1、注册EFOracleProvider 

           在CMD中转到有gacutil.exe、EFOracleProvider.dll的目录 运行gacutil /i EFOracleProvider.dll

        2、配置:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config

        找到<DbProviderFactories></DbProviderFactories>节点,将<add name="EF Oracle Data Provider" invariant="EFOracleProvider" description="EF Provider for Oracle" type="EFOracleProvider.EFOracleProviderFactory,EFOracleProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b" /> 加到 节点之间。

        3、接下来要上最重要的如何操作了。在CMD中转到EdmGen的目录,系统盘符:WINDOWS\Microsoft.NET\Framework\v3.5\

        输入EdmGen.exe /provider:EFOracleProvider /mode:fullgeneration /connectionstring:"data source=mydb;user id=test;password=123456" /project:MyEFModel将"data source=mydb;user id=test;password= 123456”换成你自己的对应的参数即可. 回车就可以看到生成的结果了。 EdmGen为我们生成需要的文件.生成的文件如下所示:MyEFMode.csdl、MyEFMode.msl、MyEFMode.ssdl、MyEFMode.ObjectLayer.cs、MyEFMode.Views.cs五个文件。

    接下来要用到EdmGen2工具, 它主要是要将上面生成的MyEFMode.csdl、MyEFMode.msl、MyEFMode.ssdl三个文件来生成一个模型.命令如下:Edmgen2.exe /toedmx MyEFMode.csdl MyEFMode.msl MyEFMode.ssdl回车之后,该工具就会为我们生成一个MyEFMode.edmx文件了.然后,把这个文件加入到我们的项目中,同时修改项目的App.Config文件连接字符串,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>  <addname="BasicDataEntities"connectionString="provider=EFOracleProvider;metadata=res://*/MyEFMode.csdl|res://*/MyEFMode.ssdl|res://*/TestEFModel.msl;Provider Connection String='data source=mydb;user id=test;password=123456'" providerName="System.Data.EntityClient"/>
  </connectionStrings>
</configuration>

 至此,修改EFOracleProvider并使用,介绍完毕。版面排版不是很好,还请见谅。

ef所需文件

修改后的EFOracleProvider源文件(支持9i)

posted on 2012-06-25 11:23  自由的鹰  阅读(1822)  评论(1编辑  收藏  举报