Entity Framework 6 Database-first连接Oracle11g
Entity Framework 6 Database-first连接Oracle11g(图文细说)
本文发布地址:http://www.cnblogs.com/likeli/p/5577264.html
目前Oracle已经推出了托管的ODP.NET驱动来连接Oracle数据库。已经支持Code First,那么到目前位置,EF的三种模式都是可以操作Oracle数据库的了。
相关文档:
EF6 Code First连接Oracle11g的Oracle官方资料:http://docs.oracle.com/cd/E56485_01/win.121/e55744/entityCodeFirst.htm#ODPNT8309
database-first配置文档(非官方):https://csharp.today/entity-framework-6-database-first-with-oracle/
集成Visual Studio 2015的ODP.NET驱动官方下载:http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html
正文:
好吧,我们开始来一个实际的例子。
首先创建一个基于.net 4.5的MVC demo。名字叫做EntityFrameworkSixForOracle的工程。如下
创建完成后,我们打开Nuget包管理器,安装一些包。
在Nuget包管理器中搜索 ManagedDataAccess
这里先安装第二个,也就是oracle.ManagedDataAccess,然后再安装oracle.ManagedDataAccess.EntityFramework。
原因是因为安装oracle.ManagedDataAccess.EntityFramework后自动安装oracle.ManagedDataAccess,但是oracle.ManagedDataAccess的版本较低,好像这两个不同步,导致之后出现未知错误(仅怀疑,未验证)。
然后将Entity Framework更新到最新版。
好的,到这步,引用工作就完成了。接下来配置DataBase-First。
在项目中创建一个文件夹Db,然后添加新项=》数据=》ADO.NET实体数据模型。
点击上面的更改,然后可以看到目前所有的数据源,一般情况下,只有前面的两项,第三项Oracle数据库是没有的。我们需要自行安装Oracle官方提供的驱动程序。
我这里提供官方下载页面,这需要有Oracle的帐号,另外也下载回来测试成功后,将安装包上传到CSDN,大家直接下载安装即可。
官方下载页:http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html
下载回来的是一个58.69MB的安装包,默认安装就可以了。
上面Oracle官方说明的截图已经很明白了,这是一个集成于Visual Studio 2015的Oracle驱动工具。另外,官方还提供了VS2013的集成工具。
安装完成后,重启VS,重复上面的步骤,会发现已经有了Oracle数据库 源这一项。好了,问题解决,我们继续。
选择Oracle数据库这一项,出现以下界面:
这里需要说明一下的,当前正在使用的Tnsnames.ora,若是我们配置的监听文件不在上面显示的位置,则点击搜索,去自动查找,选择位置和别名后,点击复制,就可以将自己Tns的相关配置,复制到驱动程序的Tns里面了,再或者,直接用我们自己的Tns文件替换掉默认驱动程序的Tns也是可以的。
以上配置完成后,点击测试,即可测试连接成功。这一步若是有什么不懂的地方,请留言。
弄好之后,确定保存。
然后选择需要导入的表,或者视图。最后单击完成即可。
如此,EF6 Database-First模式连接Oracle11g的实例就完成了 。
添加一个控制器,写一个查询测试一下。
查询前这个表的前100条看看。
好的,数据出来了,成功!
PS:使用oracle.ManagedDataAccess驱动的话,发布的应用不用再在本地安装Oracle客户端。
常见错误汇总(随时更新):
1、在从数据库更新模型的时候,提示模型已生成,但出现警告或错误。
这是因为数据建表不规范,连最基本的主键都没有。
下一章说 EF6 Code-first连接Oracle11g