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
Entity Framework 6 Database-first连接Oracle11g的更多相关文章
- 《ASP.NET MVC4 WEB编程》学习笔记------Entity Framework的Database First、Model First和Code Only三种开发模式
作者:张博出处:http://yilin.cnblogs.com Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发 ...
- Entity Framework 之Database first(数据库优先)&Model First(模型优先)
一.什么是Entity Framework 1.1 实体框架(EF)是一个对象关系映射器,使.NET开发人员使用特定于域的对象与关系数据.它消除了需要开发人员通常需要编写的大部分数据访问代码.简化了原 ...
- C# ORM—Entity Framework 之Database first(数据库优先)&Model First(模型优先)(一)
一.什么是Entity Framework 1.1 实体框架(EF)是一个对象关系映射器,使.NET开发人员使用特定于域的对象与关系数据.它消除了需要开发人员通常需要编写的大部分数据访问代码.简化了原 ...
- 转:Entity FrameWork利用Database.SqlQuery<T>执行存储过程并返回参数
public IEnumerable<Statistic> GetStatistics(IEnumerable<Guid> itemIds) { var ctx = new D ...
- [转]Entity FrameWork利用Database.SqlQuery<T>执行存储过程并返回参数
本文转自:http://www.cnblogs.com/xchit/p/3334782.html 目前,EF对存储过程的支持并不完善.存在以下问题: EF不支持存储过程返回多表联合查询的 ...
- Entity FrameWork利用Database.SqlQuery<T>执行存储过程并返回参数
目前,EF对存储过程的支持并不完善.存在以下问题: EF不支持存储过程返回多表联合查询的结果集. EF仅支持返回返回某个表的全部字段,以便转换成对应的实体.无法支持返回部分字段的情况. 虽然可以正常导 ...
- Entity Framework 利用 Database.SqlQuery<T> 执行存储过程,并返回Output参数值
做个记录: var pCount = this._dataProvider.GetParameter(); pCount.ParameterName = "totalCount"; ...
- mvc+entity framework database first,生成的model每次更新一个表会更新所有的model
在使用Entity Framework 的Database frist或model first时,直接加attribute到modle类上是太现实也不合理的,因为model类是自动生成的,重新生成后会 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- Entity Framework Code First数据库连接
1. 安装Entity Framework 使用NuGet安装Entity Framework程序包:工具->库程序包管理器->程序包管理器控制台,执行以下语句: PM> Insta ...
随机推荐
- wifi万能钥pc版提示手机未连接
关于PC版万能钥匙的用法 大部分人都是在“未连接到手机”再不知道怎么搞了 怎么连接到手机呢? 首先要把你的手机变成路由器 让电脑连上 这个都知道怎么搞吧 手机版万能钥匙有个一键让手机变成热点 再用电 ...
- (转载)详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
郑重声明:原文转载于http://dengqi.blog.51cto.com/5685776/1223132 向好文章致敬!!! 一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理 ...
- Java集合之ArrayList
ArrayList ArrayList是最常见以及每个Java开发者最熟悉的集合类了,顾名思义,ArrayList就是一个以数组形式实现的集合,以一张表格来看一下ArrayList里面有哪些基本的元素 ...
- 记一次Suse下的Django环境配置——第一弹
一.安装Python 由于原有Suse自带的Python版本只有2.4,因此首先需要安装Python的高版本,在这里我选择使用Python2.7.9.PS:之前选择使用2.7.11版本,由于没有zli ...
- Json在PHP与JS之间传输
1. JS-->PHP a). JS create Json <script> $(document).ready(function(){ /*--JS create Json--* ...
- Live YUV420 和 OpenCV Mat 的互相转换
1. YUV420 -> Mat 可用于转换接受到的YUV视频源到OpenCV可以识别的数据 Mat myuv( Frame_Height + Frame_Height / 2, Frame_W ...
- mysqldump数据库同步遇到的问题
1.同步数据是遇到 没有 lock database权限,报 " mysqldump: Got error: 1044: Access denied for user 'spider_dat ...
- 在布局文件中使用Fragment的步骤
为了在Activity布局文件中使用Fragment我们需要四个步骤. 1.定义一个Activity,他继承android.support.v4.app.FragmentActivity,下面是关键代 ...
- linux 安装nexus
1.下载nexus 的包,加压缩. 2.启动neuxs export RUN_AS_USER=root ./nexus start
- ORACLE_UNQNAME
之前在自己笔记本win7系统上安装了oracle 11g,当时为了节省资源,没启用EM. 此时查看EM状态: C:\Windows\system32>emctl status dbconsole ...