接着在Oracle中使用Entity Framework 6 CodeFirst这篇博文,正在将项目从SQLServer 2012转至Oracle 11g,目前为止遇到的问题在此记录下。

  1. SQL Server中datetime类型所能表示的时间范围是1753-01-01 00:00:00.000至9999-12-31 23:59:59.998之间。在.NET中DateTime的初始值是0001-01-01 00:00:00.000000,该值超出SQL Server中datetime所能表示的范围,所以如果未在编码时指定一个合理的时间会导致数据精度丢失引起的异常。由于在项目中使用Fluent API编码指定.NET中DateTime类型映射到SQL Server中datetime2类型,该类型的范围和精度均和.NET中DateTime类型一致。所以为了统一SQL Server和Oracle需要将代码中datetime2的配置去掉。
  2. 由于Oracle和SQL Server设计结构致使Oracle的Schema不同于SQLServer。所以在初始化模型时需要指定DefaultSchema。
  3. 无法对Oracle XLOB类型使用DISTICT操作符。这点是由项目中一个字符串属性未配置长度而发现的,正常来说不应该对这种超长的字符串做DISTINCT操作的,这点来说Oracle的严谨性要高于SQLServer。
  4. 生成的sql语句中若包含如下语句
    CASE xx WHEN xx THEN ''

    这里的空字符串如果不做转换会出现ORA-12704 字符集不匹配的错误,这里需要使用EF的专家模式拦截脚本修改成如下形式,具体使用方法将在后面介绍

    CASE xx WHEN xx THEN N''
  5. 无法对Oracle XLOB类型使用GROUP BY操作符。
  6. 在SQL Server中可以直接在查询表达式中使用ToString,而Oracle中映射为非NCLOB类型的字段则会报类型不匹配错误。因为这里ToString会翻译成TO_NCLOB(:p__linq__0)

原创文章,转载请注明: 转载自xdlysk的博客

本文链接地址: EntityFramework CodeFirst SQLServer转Oracle踩坑笔记[http://www.xdlysk.com/article/56ea77333c5c0ac00fa6c0c0]

EntityFramework CodeFirst SQLServer转Oracle踩坑笔记的更多相关文章

  1. sqlserver安装和踩坑经历

    sqlserver安装和踩坑经历 下载 下载 安装 大致是按照这个来的 安装教程 出错 windows系统安装软件弹出"Windows installer service could not ...

  2. CAS5.3服务器搭建与客户端整合SpringBoot以及踩坑笔记

    CAS5.3服务器搭建与客户端整合SpringBoot以及踩坑笔记 cas服务器的搭建 导出证书(1和2步骤是找了课程,随便写了一下存记录,不过对于自己测试不投入使用应该不影响) C:\Users\D ...

  3. ES踩坑笔记

    现在开始在业务上使用ES,记录一些踩坑经历,做点笔记. 2018-11-13 source不返回问题 使用了角色校验,客户端插入成功之后获取数据没有source,和查询参数无关. 检查mapping, ...

  4. 第十五篇:java操作oracle踩坑之旅

    最近刚做完mysql的各种需求,项目要满足oracle数据库,于是走上了漫漫的踩坑之路,同行可以看看以免踩坑……第一条:oracle建表的时候不需要在建表sql语句后指定默认字符集 DEFAULT C ...

  5. 微信小程序使用pako.js的踩坑笔记

    问题 今天组长跟我们讨论了个问题,说是文章存储占用有点大,消耗宽带流量费,让我看看能不能找个方法解决一下(文章存储的是html字符串).第一反应是没什么头绪,能想到的就是将相同的字符串替换成一个标识之 ...

  6. Vue3.x+element-plus+ts踩坑笔记

    闲聊 前段时间小颖在B站找了个学习vue3+TS的视频,自己尝试着搭建了一些基础代码,在实现功能的过程中遇到了一些问题,为了防止自己遗忘,写个随笔记录一下嘻嘻 项目代码 git地址:vue3.x-ts ...

  7. 开始更新webpack踩坑笔记

    今天开始学习webpack,记录下踩过的坑-zxf

  8. TypeScript|Angular踩坑笔记

    今天按照Angular官网玩了下demo程序,踩了个小坑,记录下. TypeScript可以将变量申明为自定义类型,同时也不对该类型进行检查(不像C#,如果没有这个类型会报错) 比如下面这样: 如果我 ...

  9. clickhouse源码Redhat系列机单机版安装踩坑笔记

    前情概要 由于工作需要用到clickhouse, 这里暂不介绍概念,应用场景,谷歌,百度一大把. 将安装过程踩下的坑记录下来备用 ClickHouse源码 git clone安装(直接下载源码包安装失 ...

随机推荐

  1. 日志管理log4js的配置

    以前就是在app.js 直接用,今天把它抽出来了. log4js.json { "appenders": [ { "type":"console&qu ...

  2. 【Python】Python3中的str和bytes

    参考文章:Python 3的bytes/str之别 len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数 >>> len('ABC') 3 >& ...

  3. git无法定位程序输入点libiconv

    使用git clone时,报以下错误: 解决方案: 将git\bin\下的libiconv-2.dll复制到\git\libexec\git-core\下即可

  4. highcharts 去掉Highcharts.com链接

    将credits属性设为false credits: { enabled: false },

  5. TomTom (16Q3)数据协议基础

    title: TomTom数据协议介绍 title: TomTom数据协议介绍TomTom公司介绍主要经营的业务TomTom数据特点数据内容概述数据表命名特点数据关联特点数据的基本信息 TomTom公 ...

  6. js创建节点及其属性

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. lucene 分词实现

    一.概念认识 1.常用的Analyer SimpleAnalyzer.StopAnalyzer.WhitespaceAnalyzer.StandardAnalyzer 2.TokenStream 分词 ...

  8. J2EE版本

    Different versions of JEE: Note: JPE (Java Professional Edition) project announced in May 1998 at Su ...

  9. 【Java】集合_学习笔记

    一.集合 1.集合类也称容器类,主要负责保存.盛装其他数据. 2.集合可以保存数量不确定的数据,保存具有映射关系的数据(也称关联数组). 3.Java5后提供一些多线程安全的集合类,放在java.ut ...

  10. Linux 命令——grep | 正则表达式

    感觉讲的很详细,瞬间懂了grep,正则. from: here 简介 grep (global search regular expression(RE) and print out the line ...