目前在.net的范围内,好的而且方便的ORM的真的不是很多,与VS集成方便的也就当属EntityFramework(以下简称EF,不知道为什么,总EF这个缩写好不专业)。但是,好多公司使用的又是ORACLE,导致使用EF的时候会出现各种不如意的情况,包括搭建环境的时候,都很蛋疼。最近终于有一个项目上了这种方式,而且很成功,所以,在这里跟大家分享一下,也希望有问题的地方大家指出来,一起改进。

环境配置由以下几个重要点:

  1. Oracle的ODP安装(包含Oracle调用控件和Oracle的vs工具)
  2. Webapi项目的建立
  3. 微软EntityFramework6的安装
  4. 将Oracle的托管引用改为非托管引用(可以脱离目标环境的位数限制)

ODP.NET的安装

因为安装ODP.NET后,我们需要重启VS,所以,我们先来安装ODP.NET再来新建项目。

下载oracle的dbac(x86)下载地址(不能下载请留言),关掉所有vs,然后安装下载下来的压缩包里面的setup.exe。安装设置的两个目录,一定不要有特殊字符,可以用同一个,@,()等千万别有。

Webapi项目的建立

打开vs的新建项目界面,选C#-WEB-ASP.NET MVC,然后填写项目名称,选择项目所在位置,点确定。

继而弹出新的窗口,按图中选择操作:

然后点击确定,就会打开一个项目,其它的配置如同其它项目一样。

引入EntityFramework

打开工具,选择Nuget包工具管理,如果图打开Nuget包管理器:

选择联机,找到entity framework,点安装,安装到刚刚我们的WebApi项目中。

引用Oracle的ODP.NET

右击项目的引用·添加新的引用·在扩展里面找到Oracle.ManagedDataAccess以及Oracle.ManagedDataAccess.EntityFramework【注意1】。然后确定。此时,项目中就成功引用了这两个东西。

将如下web.config内容加入到web.config中,注意如果有相同的,则将原有的替换掉。

<configSections>
<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 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
</connectionStrings>
<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>
<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="*">
<settings>
<setting name="TNS_ADMIN" value="C:\TNS_ADMIN" />
<setting name="TraceOption" value="1" />
<setting name="PerformanceCounters" value="0" />
</settings>
</version>
</oracle.manageddataaccess.client>

需要注意的是,[TNS_ADMIN]这个东西后面的value指向的是放TNS文件的目录,如果你不是用TNS文件来管理数据库的IP地址,而是在连接字符串中直接使用IP连接,则可以不写这个SETTING项。

至此,准备工作全部完成。

【注意1:如果引用的时候找不到Oracle.ManagedDataAccess以及Oracle.ManagedDataAccess.EntityFramework,可以在下面的ODP安装包中,找到这两个文件,解压出来放到项目里面,然后直接对这两个文件进行引用即可。】

转载请注明作者及来源:张峻崎,博客园

基于Oracle的EntityFramework的WEBAPI2的实现(一)——准备工作的更多相关文章

  1. [转]基于Oracle的EntityFramework的WEBAPI2的实现(一)——准备工作

    基于Oracle的EntityFramework的WEBAPI2的实现(一)——准备工作  转载请注明作者及来源:张峻崎,博客园 目前在.net的范围内,好的而且方便的ORM的真的不是很多,与VS集成 ...

  2. 基于Oracle的EntityFramework的WEBAPI2的实现(二)——使用DbFirst

    之所以使用DbFirst而没有使用CodeFirst是因为考虑到现实的情况中,我们之所以会选择oracle而不是SQL SERVER,一方面是因为之前公司已经在使用Oracle,而且有好多我们需要用到 ...

  3. 基于Oracle的EntityFramework的WEBAPI2的实现(三)—— 建立APIController及设置返回类型JSON、XML等

    建立普通的ApiControler 右击项目中的controller文件夹·添加·控制器·包含操作的webapi2控制器(使用entity framework),写个名字,如果:Test.然后选择类, ...

  4. 基于Oracle的EntityFramework的WEBAPI2的实现(四)——自动生成在线帮助文档

    打开我们项目中的Area文件夹,正常情况下,我们会发现已经有了一个名字叫做[HelpPage]的区域(Area),这个区域是vs帮助我们自动建立的,它是一个mvc(不是webapi),它有普通的Con ...

  5. 基于Oracle的SQL优化(社区万众期待 数据库优化扛鼎巨著)

    基于Oracle的SQL优化(社区万众期待数据库优化扛鼎巨著) 崔华 编   ISBN 978-7-121-21758-6 2014年1月出版 定价:128.00元 856页 16开 编辑推荐 本土O ...

  6. 基于Oracle OCI的数据访问C语言接口ORADBI .

    基于Oracle OCI的数据访问C语言接口ORADBI cheungmine@gmail.com Mar. 22, 2008   ORADBI是我在Oracle OCI(Oracle 调用接口)基础 ...

  7. 基于ORACLE建表和循环回路来创建数据库存储过程SQL语句来实现

    一个.概要 在实际的软件开发项目.我们经常会遇到需要创造更多的相同类型的数据库表或存储过程时,.例如.假设按照尾号点表的ID号,然后,你需要创建10用户信息表,的用户信息放在同一个表中. 对于类型同样 ...

  8. 基于oracle的sql优化

    [基于oracle的sql优化] 基于oracle的sql优化 [博主]高瑞林 [博客地址]http://www.cnblogs.com/grl214 一.编写初衷描述 在应有系统开发初期,由于数据库 ...

  9. 转://从一条巨慢SQL看基于Oracle的SQL优化

    http://mp.weixin.qq.com/s/DkIPwbDKIjH2FMN13GkT4w 本次分享的内容是基于Oracle的SQL优化,以一条巨慢的SQL为例,从快速解读SQL执行计划.如何从 ...

随机推荐

  1. day23 CMDB 深入讲解

    课前准备: https://www.getpostman.com/postman 内容: 1. cmdb资产自动更新2. api安全认证3. restfulAPI 4. 自定义用户认证 课堂笔记: 前 ...

  2. Python----Paramiko模块和堡垒机实战

    paramiko模块 paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实 ...

  3. caffe:自己搭建网络来训练

    1.准备样本 要训练自己的样本,首先需要把样本准备好,需要准备的是训练集和测试集,caffe支持直接使用图片,当然把样本转换为leveldb或lmdb格式的话训练起来会更快一点.这里我先偷个懒,直接使 ...

  4. iRSF快速简单易用的实现列表、排序、过滤功能

    IRSF 是由javascript编写,iRSF快速简单易用的实现列表.排序.过滤功能(该三种操作以下简称为 RSF ). iRSF由三个类组成. iRSFSource 数据源 iRSFFilter ...

  5. Git远程操作详解(新手必备)

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  6. Spring整合Hibernate:1、annotation方式管理SessionFactory

    1.在applicationContext.xml文件中初始化SessionFactory(annotation方式) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 ...

  7. 前端中CSS属性大全

    css属性 布局常用样式属性: width 设置元素(标签)的宽度,如:width:100px; height 设置元素(标签)的高度,如:height:200px; background 设置元素背 ...

  8. H.264采集、编码、传输的流程

    转载自H.264采集.编码.传输的流程 1 采集到的原始数据放入buf中 2 转化为yuv格式放入yuv conv.RGB24_to_YV12(buf, yuv,IMAGE_WIDTH, IMAGE_ ...

  9. L164

    “TAKE ONLY memories, leave only footprints” is more than a hiking motto at the Sagarmatha National P ...

  10. 实现DQN算法玩CartPole

    先安装tensorflow 1.2版本和python 3.6, 接着安装: numpy-1.13.1+mkl-cp36-cp36m-win_amd64.whl 的版本,这个是windows下的,如果l ...