接着在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. [DL学习笔记]从人工神经网络到卷积神经网络_2_卷积神经网络

    先一层一层的说卷积神经网络是啥: 1:卷积层,特征提取 我们输入这样一幅图片(28*28): 如果用传统神经网络,下一层的每个神经元将连接到输入图片的每一个像素上去,但是在卷积神经网络中,我们只把输入 ...

  2. Radmin Server-3.5 完美绿色破解版(x32 x64通用) 第三版 + 单文件制作方法

    Radmin Server v3.5 汉化破解绿色版(x32 x64通用) 第三版 下载链接: https://pan.baidu.com/s/1qYVcSQo 2016年7月8日更新第三版1.修复在 ...

  3. 高通camera学习笔记

    http://www.2cto.com/kf/201609/548725.html http://www.android100.org/html/201508/24/176303.html

  4. C++备忘录

    参考资料: 1. <C++编程思想(第一卷)> 知识点: ● register变量:它是一种局部变量类型.它告诉编译器尽快访问该变量.一般会把变量放在寄存器中,但不保证一定会.不能得到或计 ...

  5. 如何在自己的窗体(控件)中显示XAF的视图

    Form form = new Form(); DevExpress.ExpressApp.View listView = Application.CreateListView(Application ...

  6. Mac系统下显示和隐藏文件

    在配置Maven的时候需要更改.m2文件,所以要将.m2显示出来,记录一下方便日后使用. 显示文件:在终端输入defaults write com.apple.finder AppleShowAllF ...

  7. App的启动过程

    App的启动过程 所有的app都是通过launcher去启动的 launcher自己也是一个app,一个系统级别的app,放在asystem/app/下,使用系统签名. 对代码进行分析

  8. asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法

    来源:http://ajxfxb.blog.163.com/blog/static/56675086201411634336878/ 作者是:没完没了的工作 asp.net报错“尝试读取或写入受保护的 ...

  9. 团队作业week14

    0 如果你的团队来了一个新队员,有一台全新的机器,你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境, 并成功地把最新.最稳定版本的软件编译出来,并运行必要的单元测试?(在这 ...

  10. JavaScript中的方法重载

    对js有些了解的人都知道,在js中根本就不存在像C#中的那种方法重载,而有的只是方法的覆盖,当你在js中敲入两个或多个同名的方法的时候,不管方法(函数)的参数个数怎么个不同,这个方法名只能属于最后定义 ...