Oracle EF5升级EF6

【配置系统环境】

按照官方文档的指引,下载安装EF6插件、Oracle EF Visual Studio插件,详情如下:

https://msdn.microsoft.com/en-us/data/dn469466
https://msdn.microsoft.com/en-us/data/jj730568
http://www.oracle.com/technetwork/topics/dotnet/downloads/install121021-2389380.html

【配置工程环境】

Web.config 中configuration节点下添加如下数据库提供程序:

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework" />
    </providers>
  </entityFramework>

编译成功,运行会发现一大堆的类型不匹配的错误。

如果是Database First的,重新生成数据模型,会发现Model的数据类型变了,EF6相对于EF5的数据类型更加严格,比如:

EF5 NUMBER(3) short

EF6 NUMBER(3) Byte

这在某些情况下是不能满足我们的需求的,只要在App.config和Web.config中configuration节点下添加下面的配置就可以了。

<oracle.manageddataaccess.client>
    <version number="*">
      <edmMappings>
        <edmNumberMapping>
          <add NETType="int16" MinPrecision="1" MaxPrecision="5" DBType="Number"/>
        </edmNumberMapping>
      </edmMappings>
    </version>
  </oracle.manageddataaccess.client>

看到上面的配置,我们是不是可以把Number(1) 配置成Bool呢?根据需要吧。

【oracle ef 数据库读写分离】

我升级到EF6就是为了读写分离,EF6增加了DbCommandInterceptor过滤器,通过过滤器我们可以记录执行的脚本,更可以做自动读写分离,相关请参考两位牛人的博客。

1. http://www.cnblogs.com/lori/p/4208974.html

2. http://www.cnblogs.com/cjw0511/p/4391092.html

关于用哪个,看个人需求了,两种基本差不多。

第一种在每次读的时候创建新的连接,所以在多次读的时候相当于多次连接。

第二种在读的时候把连接转到读的,写的时候把连接转到写的,事务开始时转写的,不过目前事务处理上还有点bug

不管是哪种方案,如果在一次业务处理中,既要读又要写,建议创建两个数据库实例,避免全走主库或者导致读写交替关闭打开。

时间: 2024-08-29 23:51:21

Oracle EF5升级EF6的相关文章

oracle 10g升级cluster失败

今天升级一个10g的集群环境到10.2.0.5,网上下载补丁包p8202632_10205_Linux-x86-64.zip,解压后安装执行,中途报错: I/O ERROR cannt reading or opening file in /tmp/...../temp52 网上查资料如下: 根据MOS的说明,导致这个错误可能有如下原因: a) Insufficient free space in the temporarydirectory. b) Insufficient access ri

Oracle Study之--Oracle TimeZone升级

Oracle Study之--Oracle TimeZone升级 http://tiany.blog.51cto.com/513694/1411882  Oracle 10gR2升级到Oracle 11gR2       当Oracle database从10gR2升级到11gR2之后,需要升级timezone version,以下详细介绍了timezone的升级过程. Oracle timezone 升级 背景描述: 如果需要支持一个国际化的应用,那么数据库端的国际化特性的支持也就显得尤其重要

《oracle 9i 升级 10g 后续 - 建立 10g oracle enterprise manager》

摘要:<oracle 9i 升级 10g 后续 - 建立 10g oracle enterprise manager> 2009/6/21 直接安装 oracle 10g,默认会建立与9i不同的管理界面 今天想试用一下,却不知如何下手,请教google大神后,重建 oem. --------------------------------------------------------------------------------- 参考文章: http://hi.baidu.com/ter

oracle 11g升级

手先需要下载oracle11g的补丁安装包,一般只有付费用户才能获取到该安装包,其他用户获取不到,那怎么办呢? 万能的互联网可以办到,可以用http://www.wangpansou.cn/所有其他用户放在网盘里面的补丁包,是不是很吊? oracle 11g 官方下载版本是11.1的漏洞很多,如果需要下载补丁包的话,很多下面列出了补丁包的详细说明: 第一, 二个包表示database , 如果升级数据库,只需要这2个文件即可. 第三个包表示grid, 用来升级RAC 的CRS.如果升级RAC 要

oracle数据库升级dbua操作阻塞解决方法(解决ORA-32004报错)

操作环境 1.SuSE11sp3操作系统 2.oracle 11.2.0.3版本升级到11.2.0.4版本 问题现象   oracle 11.2.0.3版本升级到11.2.0.4版本时执行dbua命令在获取dabase信息步骤时提示输入pfile文件,无法next操作,升级阻塞.(不是在自己环境操作,暂无截图) 问题分析   oracle start mount步骤时会出现提示ORA-32004: obsolete or deprecated parameter(s) specified for

ORACLE PSU升级总结

首先,进行PSU,首要的事情就是认真的看readme.html,从里面我们可以知道很详细的升级步骤已经回退的方案.并且避免了很多的坑 在进行PSU之前,要首先确认你准备升级的版本以及你自己系统数据库的版本,就像我们这次,是从11.2.0.4.0升级到11.2.0.4.2版本,从MOS上去找到相应的PATCH p18031668_112040_Linux-x86-64.zip 可以通过p后面的数字在mos上面很容易的查到该补丁包,从该版本的补丁包的readme.html 中.我们可以看到这样要求

Oracle + EF5 疑难杂症

PDF 版 http://files.cnblogs.com/xling/Oracle.pdf Oracle 环境准备 ODAC ODAC 全称 Oracle Data Access Components 下载: ODP.NET (Oracle Data Provider) http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html ODTwithODAC (ODAC With Oracle Dev

[原创]zero downtime using goldengate实现oracle 12C升级系列 第四篇:集群安装

1. 图形化界面,我用的软件是MobaXterm Personal Edition, 直接ssh [email protected]_server,然后./runInstaller就可以弹出图形化界面,当然还有其他工具如vnc可以实现图形化,这里就略过不提了,下面直接开始安装. 2.关于软件下载,在mos上面下载 Installation Type Zip File Oracle Database (includes Oracle Database, Oracle RAC, and Deinst

[原创]zero downtime using goldengate实现oracle 12C升级系列 第三篇:asmlib配置

1. All nodes as root rpm -ivh oracleasmlib-2.0.4-1.el6.x86_64.rpm rpm -qa *asm* kmod-oracleasm-2.0.8-13.0.1.el6_8.x86_64 oracleasm-support-2.1.8-1.el6.x86_64 oracleasmlib-2.0.4-1.el6.x86_64 rpm -qa cvu*cvuqdisk-1.0.9-1.x86_64 2.装完上述必备的rpm之后就可以开始配置asm