本文是对下文的补充,切勿以为我是全盘复制哦

连接:

http://www.cnblogs.com/wlflovenet/p/4187455.html

Entity Framework6 with Oracle(可实现code first)

本人项目代码版本

VS2013 Update 4

Oracle 服务端是Oracle11gr2,而后各种Oracle服务端,还有各种客户端,具体原因不多述,导致本人开发的程序,全部必须使用ODP.NET, Managed Driver

ODP.NET, Managed Driver 分为两种,一种是自带在ODP.Net安装包(此安装包只分32位安装版本和64位 XCOPY版本),一种是只有9M的zip包

微软的Nuget上不是最新的,目前支持EntityFramework (6.0.0.0)的只 有Oracle官网上的ODTwithODAC121021.zip,ODP.NET_Managed121020.zip,两个版本

PS:上面那段话我已经删除,原因是最近发现出了新版本的ODP.NET,不仅仅是自带了托管式驱动,而且还包含了MSI安装包,并且XCOPY版本的(即时客户端)也有了32位/64位的啦

地址为:http://www.oracle.com/technetwork/topics/dotnet/downloads/net-downloads-160392.html

在多嘴一句,如果有更新之后,没有在服务器资源管理器添加新数据连接里看到ODP的托管式驱动/非托管驱动 ,那么有两种可能

1.你没有按照下文所说的,加入一个默认的Oracle连接字符串,注册Oracle的托管式驱动在config里,按照下文修改下config文件即可

2.你的Oracle客户端/服务端没有卸载干净,本机上的Oracle有冲突,那么你就要赶紧清理Oracle的注册表残留了(这就是比Linux麻烦的一点),还要检查系统设置里的Patch里选项,是否还残留Oracle的安装目录调用之类的。

3.读取数据库表结构也需要一定的权限,如果权限不足,也会读取不到任何表(此项待验证)

解决办法:

在面那个链接地址里,你会看到如下的5个链接,

第一个是ODP.NET的安装客户端(自带Oracle客户端一个,即时客户端一个),跟安装了Oracle客户端性质差不多,但是好像是没有32位的驱动

会导致PLSQL连接不上,具体你们自己测试就知道了,一般装这个,就可以在服务器资源管理器添加新数据连接里看到ODP的托管式驱动/非托管驱动,此法通杀vs2010,vs2012,vs2013 一切版本

第四,第五链接是最近出的,好像装了,就会自动给你注册托管式DLL,并且注册相关的注册表事项,是否和第一个链接类似,不太清楚,偶也是第一次用,大家自行测试吧

  • 32-bit ODAC with Oracle Developer Tools for Visual Studio Downloads
  • 32-bit ODAC Xcopy and NuGet Downloads
  • 64-bit ODAC Downloads - Oracle Universal Installer and Xcopy
  • Oracle Developer Tools for Visual Studio 2015 - MSI Installer
  • Oracle Developer Tools for Visual Studio 2013 - MSI Installer


如果你的项目是基于目前的EF6.1版本的话,你在Nuget上引用EF最新版本的时候,再引用此dll,会自动替你更新为最新版本,并且自动引用新版本的EF驱动,所以应该只需要进行下面的那个Oracle连接字符串配置即可,如果装了MSI安装包,应该也可以默认给你配置个的。

鉴于某些伸手党同学不太明白我这到底改了哪里,我特意上传一份我已经支持的config文件内容,

需要注意的一点是,如果是你本机上已经安装过Oracle 的ODP.Net的其他版本,请自行查看maching.config(也区分32位和64位)中是否有类似下面标红的地方( <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />)这样的注册

如果没有,则证明没有安装ODP.NET,自己装一个即可,如果是托管式驱动,则无需此步骤,

如果在其他机器打开源代码,进行开发的时候,记得把上面那段话先注释掉,会有冲突

<?xml version="1.0" encoding="utf-8"?>
<configuration><configSections><!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --><section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /><!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --><!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /><!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --><!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections><entityFramework><defaultConnectionFactory type="Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /><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><runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><dependentAssembly><assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" /><bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /></dependentAssembly><dependentAssembly><publisherPolicy apply="no" /><assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" /><bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.121.2.0" /></dependentAssembly><dependentAssembly><assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" /><bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /></dependentAssembly></assemblyBinding></runtime><startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup><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><oracle.manageddataaccess.client><version number="*"><dataSources><dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " /></dataSources></version></oracle.manageddataaccess.client>
  <connectionStrings><add name="00_Entities" connectionString="metadata="res://*/Entity Data Model.00.DB_00.csdl|res://*/Entity Data Model.**.**.ssdl|res://*/Entity Data Model.**.**.msl";provider=Oracle.ManagedDataAccess.Client;provider connection string="DATA SOURCE=192.13.11.102:1521/00;PASSWORD=006tsl;PERSIST SECURITY INFO=True;USER ID=00"" providerName="System.Data.EntityClient" /><add name="TPL_Entities" connectionString="metadata="res://*/Entity Data Model.TPL.DB_TPL.csdl|res://*/Entity Data Model.TPL.DB_TPL.ssdl|res://*/Entity Data Model.TPL.DB_TPL.msl";provider=Oracle.ManagedDataAccess.Client;provider connection string="DATA SOURCE=192.13.11.102:1521/ORCL;PASSWORD=1l;PERSIST SECURITY INFO=True;USER ID=OP0"" providerName="System.Data.EntityClient" /></connectionStrings>
</configuration>

省略千字,进入正题,如果出现下面这个信息(相信很多人都和我一样被微软给迷惑了)

其实是我们基础学的好不好,此处上文提到园友其实已经给出了解决办法

那就是修改Web.config;

改为

  <entityFramework><defaultConnectionFactory type="Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /><providers><provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /></providers></entityFramework>

记得

    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> 这句话要加到
  <configSections>  </configSections> 里

如果没有默认的连接对象,自己手写个即可就是  <connectionStrings> 
  </connectionStrings>里加入一个你自己默认要用的连接字符串即可,完成生成之后,这个删除都行的
 
如下图所示

到此步,基本上都能用,我就可耻的隐匿了,要感谢wlf提供了如此好的文章,我只是一个搬运工,谢谢残冰给与的ef使用指导,感谢死胖子你那脑洞大开的ef bug论

PS:如果发现我文章中的Oracle.ManagedDataAccess版本和我上面提到的文章作者说的版本不一致,那是因为我这个是最新的,最新版本是4.121.2.0

我是64位的win8.1 装的ODP.Net(这玩意只有32位的),安装之后,VS2013和VS2010里就会自带有Oracle.ManagedDataAccess。

Oracle官网地址

http://www.oracle.com/technetwork/topics/dotnet/downloads/net-downloads-160392.html (已更新)

转载于:https://www.cnblogs.com/yzb305070/p/4251036.html

让Vs2013 完美支持EF6.1 Code First with Oracle 2015年12月24日更新相关推荐

  1. 微软对 Windows 10 Mobile 的支持将于12月10日结束

    在 Windows 支持信息的官方 FAQ 页面上显示:对 Windows 10 Mobile 的支持计划将于今年12月10日结束,此后任何用户将不再会获得安全更新.补丁和免费的协助支持等. 为此,微 ...

  2. 外媒:华为或将在2月24日发布麒麟820 支持5G网络

    2月22日消息,据外媒报道,华为可能将在2月24日发布新的麒麟处理器,升级版麒麟820可能最大的提升就是支持5G网络. 麒麟820可能是华为一款定位中端的5G处理器,此前有消息称,麒麟820可能会使用 ...

  3. 天猫京东618下单金额近万亿;苹果或选择印度组装新款iPhone SE;Adobe将于12月31日终止支持Flash| 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极 ...

  4. 微软将于2019年12月10日终止Windows 10移动支持

    Windows 10 Mobile support is coming to an end in December. Microsoft stopped developing features for ...

  5. 6月24日科技资讯|QQ 邮箱漂流瓶将下线;华为美国公司起诉美商务部;Ubuntu 不会放弃 32 位应用程序支持

    「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时刻紧跟业界潮流. 「CSDN ...

  6. 2013 12 android 凯立德秋季高清旗舰 百度云,【荐】2013.4.12凯立德春季完美安卓手机版+4月23日更新车用高清版...

    转自汤汤汤和gps之家 2013.4.12凯立德安卓自适应全分辨率不漂移完美折腾版C2025-C7E01-2C21J0C .简介 2013.4.12新的凯立德安卓自适应全分辨率内外卡通用不漂移完美 ...

  7. 10月24日云栖精选夜读:2017杭州·云栖大会完美收官 虚拟化平台精彩回顾

    阿里云飞天八部虚拟化平台普及了 虚拟化技术从1998年到现在的发展史.异构计算助力新一代人工智能加速发展,虚拟化技术专场"黑科技"解读. 会上,神龙云服务器深度解析带来新一代技术革 ...

  8. 华为鸿蒙支持APP,曝华为鸿蒙 2.0 将于 6 月 2 日正式登场,200+ 主流 App 已支持

    IT 之家 5 月 18 日消息 华为鸿蒙 OS 2.0 系统是首个真正为全场景时代打造的分布式操作系统,支持跨设备协同.大小屏互动.极速配网.自适应 UX.可视可说 AI 赋能语音交互.开发者开源等 ...

  9. 微软什么时候停止对win7进行服务器,微软官方通告:2020年1月24日起停止对windows7的技术支持...

    尽管谷歌.苹果等厂商也都有自主研发的PC系统,但其用户量与Windows 相比,实在不值得一提.数据显示,windows占领PC市场85%以上的份额. 另外,在Windows 系统当中,目前windo ...

最新文章

  1. 《OpenCV3编程入门》学习笔记7 图像变换(三 )重映射
  2. 微信开放平台 公众号第三方平台开发 教程一 平台介绍
  3. 2013年1月第4个周末
  4. WinSock嗅探虚拟主机拿站取webshell
  5. php自定义商品属性,php – 可变产品属性:自定义每个显示的单选按钮文本值
  6. PCL最小二乘法进行平面拟合原理
  7. 创建一个TCP服务器端通信程序的步骤
  8. andriod 自定义来电界面功能
  9. 360浏览器html5无法播放,win7系统360浏览器播放不了视频的解决方法
  10. Godot 导出 Android apk
  11. JAVA理财管理系统(JAVA 毕业设计)
  12. Steam游戏存档位置大全
  13. 背景图片渲染时有色块怎么办
  14. 近期你已经授权登录过_原来我的微信、QQ 授权登录过这么多应用!(附查找及解绑方法)...
  15. java-a实现压缩与解压缩(zip、gzip)
  16. 滴滴拉屎之后是什么?
  17. spring源码阅读笔记09:循环依赖
  18. 机器学习笔记(通俗易懂)---监督学习介绍:分类与回归,泛化~过拟合与欠拟合(2)
  19. hackerrank初级篇之staircase
  20. 输入一无符号整数,求所有数位上数字之和

热门文章

  1. Python Django 装饰器模式之三阶装饰器
  2. 使用redis incr计数来控制单位时间内对某接口的访问量
  3. 前端动态菜单权限、按钮权限实现思路
  4. IDEA如何重新刷新pom.xml文件重新下载
  5. 数据结构——顺序存储二叉树
  6. 那些常见的C++、Qt基础面试题
  7. 测度论相关概念(吐)
  8. html div阴影向上,css3阴影向上缓动样式
  9. 事务(ACID)、并发一致性问题(丢失修改、读脏数据、不可重复读、幻影读)、封锁(封锁粒度、类型、协议、MySQL 隐式与显示锁定)
  10. 电脑账户头像怎么删掉_情侣头像丨情侣头像一男一女背影