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

国内CSDN下载:http://download.csdn.net/detail/a406502972/9546928

下载回来的是一个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的更多相关文章

  1. 《ASP.NET MVC4 WEB编程》学习笔记------Entity Framework的Database First、Model First和Code Only三种开发模式

    作者:张博出处:http://yilin.cnblogs.com Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发 ...

  2. Entity Framework 之Database first(数据库优先)&Model First(模型优先)

    一.什么是Entity Framework 1.1 实体框架(EF)是一个对象关系映射器,使.NET开发人员使用特定于域的对象与关系数据.它消除了需要开发人员通常需要编写的大部分数据访问代码.简化了原 ...

  3. C# ORM—Entity Framework 之Database first(数据库优先)&Model First(模型优先)(一)

    一.什么是Entity Framework 1.1 实体框架(EF)是一个对象关系映射器,使.NET开发人员使用特定于域的对象与关系数据.它消除了需要开发人员通常需要编写的大部分数据访问代码.简化了原 ...

  4. 转:Entity FrameWork利用Database.SqlQuery<T>执行存储过程并返回参数

    public IEnumerable<Statistic> GetStatistics(IEnumerable<Guid> itemIds) { var ctx = new D ...

  5. [转]Entity FrameWork利用Database.SqlQuery<T>执行存储过程并返回参数

    本文转自:http://www.cnblogs.com/xchit/p/3334782.html 目前,EF对存储过程的支持并不完善.存在以下问题:        EF不支持存储过程返回多表联合查询的 ...

  6. Entity FrameWork利用Database.SqlQuery<T>执行存储过程并返回参数

    目前,EF对存储过程的支持并不完善.存在以下问题: EF不支持存储过程返回多表联合查询的结果集. EF仅支持返回返回某个表的全部字段,以便转换成对应的实体.无法支持返回部分字段的情况. 虽然可以正常导 ...

  7. Entity Framework 利用 Database.SqlQuery<T> 执行存储过程,并返回Output参数值

    做个记录: var pCount = this._dataProvider.GetParameter(); pCount.ParameterName = "totalCount"; ...

  8. mvc+entity framework database first,生成的model每次更新一个表会更新所有的model

    在使用Entity Framework 的Database frist或model first时,直接加attribute到modle类上是太现实也不合理的,因为model类是自动生成的,重新生成后会 ...

  9. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  10. Entity Framework Code First数据库连接

    1. 安装Entity Framework 使用NuGet安装Entity Framework程序包:工具->库程序包管理器->程序包管理器控制台,执行以下语句: PM> Insta ...

随机推荐

  1. 常用function() 收集

    1.随机数生成函数(来源-微信支付demo案例) /** * * 产生随机字符串,不长于32位 * @param int $length * @return 产生的随机字符串 */ public st ...

  2. 关于JSF中immediate属性的总结(一)

    Purpose The immediate attribute can be used to achieve the following effects: Allow a commandLink or ...

  3. Maven的POM.xml配置大全

    <?xml version="1.0" encoding="utf-8"?> <project xmlns="http://mave ...

  4. LaTeX简单使用方法

    Content LaTeX的用途 LaTeX文件布局 LaTeX的文档格式 公式环境 图的排版 表格的排版 有序列表和无序列表 引用 伪代码 参考文献 LaTeX的用途 LaTeX是一种基于TeX的排 ...

  5. ARM概论(Advanced RISC Machines)

    简介 ARM7是32 位通用微处理器ARM(Advanced RISC Machines)家族中的一员,具有比较低的电源消耗和良好的性价比, 基于(精简指令)RISC结构,指令集和相关的译码机制与微程 ...

  6. html5--canvas绘制简单的时钟

    http://5227788.cn/static/time.html <!DOCTYPE html> <html lang="en"> <head&g ...

  7. JAVA基础学习——1.2 环境搭建 之eclipse安装及中文化

    安装好jdk,配置好环境变量以后,下面就可以进行安装eclipse了. 闲话少说,eclipse下载地址:http://www.eclipse.org/downloads/ 不大用关注checksum ...

  8. jQuery根据name取input值问题

    最近做项目用$("input[name=inputName]").val();去取input值得时候发现取值有问题:总是取第一次输入的值,如果在同一个页面不发生表单提交,然后将in ...

  9. jeecms3.0.4版本 详解请求如何找到首页(转)

    第一步:发送http://localhost:8080/emisstrade/ 请求 第二步:首先进入配置文件web.xml, <context-param> <param-name ...

  10. [原创]MvvmLight中用IDialogService替代DialogMessage的用法

    在新版的MvvmLight中,DialogMessage被标注为已过时,需要用IDialogService来替代,IDialogService的具体用法如下: 先在主窗体中实现IDialogServi ...