EF(EntityFramework)使用Code First连接Oracle数据库详解

场景描述:本机是安装了Oracle12。连接Oracle数据库,需要引用两个DLL,分别是:Oracle.ManagedDataAccess.dll和Oracle.ManagedDataAccess.EntityFramework.dll,我在vs2013和vs2015里面的Nuget上,安装了这两个包,在运行的时候,一直报:未能在程序集Oracle.ManagedDataAccess中找到OracleInternal.Common.ConfigClass类,一直郁闷啊;后来发现我本机有最新的Oracle啊,于是在Oracle的安装目录中,查找这两个程序集,还果然找到了:再安装目录D:\software\oracle\product\12.1.0\dbhome_1\ODP.NET\managed\common下。如下图:


把项目中在nuget上引用的2个dll,全部换成这里面的dll。然后再次运行项目,如下图:



数据库中的表,也已经自动生成了,如下图:




关于如何写代码就不说了,关键是配置文件,如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />  
  </configSections>

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="Oracle.ManagedDataAccess.Client" />
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>

  <connectionStrings>
    <add name="Default" connectionString="DATA SOURCE=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=jucheap)));PASSWORD=123;PERSIST SECURITY INFO=True;USER ID=jucheap; enlist=dynamic;" providerName="Oracle.ManagedDataAccess.Client" />
  </connectionStrings>
  
  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <dataSource alias="JUCHEAP" descriptor="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=jucheap)))" />
      </dataSources>
      <edmMappings>
        <edmMapping dataType="number">
          <add name="bool" precision="1" />
          <add name="byte" precision="3" />
          <add name="int16" precision="5" />
          <add name="int32" precision="10" />
          <add name="int64" precision="19" />
        </edmMapping>
      </edmMappings>
    </version>
  </oracle.manageddataaccess.client>
</configuration>



为了方便大家学些,另附上Demo程序:http://www.jucheap.com/demo/EF.Oracle.rar


  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值