.NET EF 访问Oracle之问题小结

  由于最近手头上的项目要求使用Oracle数据库,所以我搭建了asp.net mvc + EF + bootstrap + log4Net + unity的三层框架,如下图所示:

  

  其中单元测试使用微软自带的,个人感觉轻便,所以没使用NUnit。

  使用EF+Oracle期间,遇到一些问题让我挺纠结,因为之前一直使用EF+SQL SERVER,如下:

  1.为了防注入,使用参数的方式过滤,SQL SERVER 是用@,而Oracle使用的是:,如下:

    

        /// <summary>
        /// 测试函数
        /// </summary>
        public DataTable TestSql(string userName)
        {
            var fpmCustomSqlDAO = ServiceLocator.GetService<IFPMCustomSqlDAO>();
            string sql = @"select *
                        from fpm_user
                        where  instr(name, :userName) > 0";
            var para = new OracleParameter("userName", userName);
            //para.Value = userName;
            return DB.ExecuteDataTable(sql,para);
        }

  而SQL SERVER如下:

  

        /// <summary>
        /// 测试函数
        /// </summary>
        public DataTable TestSql(string userName)
        {
            var fpmCustomSqlDAO = ServiceLocator.GetService<IFPMCustomSqlDAO>();
            string sql = @"select *
                        from fpm_user
                        where  name like ‘%@userName%‘ > 0";
            var para = new SqlParameter("@userName", userName);
            //para.Value = userName;
            return DB.ExecuteDataTable(sql,para);
        }

  并且,要特别注意,虽然like ‘%%’这种语法在Oracle客户端上可以执行,但是通过C#代码却不可以,要使用instr(name, :userName) > 0代替,至于为什么不行,暂时没时间去探索,希望知道的朋友留言赐教。

2.Oracle客户端执行的sql可以在末尾表;,并且多条语句一起执行的时候,必须在每一句末尾加;,但是在C#代码里面,却不可以带;,否则出现ora-00933:sql命令未正确结束的问题。如下:

  

            string sql = @"select *
                        from fpm_user
                        where  instr(name, :userName) > 0";

如上则没问题,而

  

            string sql = @"select *
                        from fpm_user
                        where  instr(name, :userName) > 0;";

就会出现“ora-00933:sql命令未正确结束”的问题。

  暂时发现如上两个和EF操作SQL SERVER不一样的问题,继续探究,到时候再补充!

时间: 2024-10-18 04:53:38

.NET EF 访问Oracle之问题小结的相关文章

oracle事务知识点小结

DML语句流程 1 获取事务锁和ITL2 锁定候选行3 生成redo4 生成undo5 生成redo record写入log buffer并更改数据块 事务提交1 分配SCN2 更新事务表,将事务槽状态改为0x093 回收undo块4 创建commit redo record5 将redo从log buffer刷新6 释放表锁和行锁 锁一个事务由1个TX和若干TM组成,而回滚savepoint不会释放TX锁: ITL通过XID指向事务槽,进而指向undo记录,其UBA也指向undo记录:两者区别

EF for Oracle,dotConnect for Oracle,ODP.NET

dotConnect for Oracle dotConnect for Oracle是一款为Microsoft .NET Framework提供直接Oracle数据库连接的数据发生器控件.它完全基于ADO.NET方法,因此您完全可以采用标准ADO.NET数据提供的方法来使用它. 下载与安装 https://www.devart.com/dotconnect/oracle/dcoracle.exe 完成后安装即可 EF配置 Oracle Data Provider for .NET (ODP.N

.net中使用ODP.net访问Oracle数据库(无客户端部署方法)

.net中使用ODP.net访问Oracle数据库(无客户端部署方法) 分类: c# database2012-01-05 15:34 6330人阅读 评论(1) 收藏 举报 oracle数据库.netcomponentsdll ODP.net是Oracle提供的数据库访问类库,其功能和效率上都有所保证,它还有一个非常方便特性:在客户端上,可以不用安装Oracle客户端,直接拷贝即可使用. 以下内容转载自:http://blog.ywxyn.com/index.php/archives/326

45个非常有用的 Oracle 查询语句小结

 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快快收藏吧. 原文地址:http://www.jbxue.com/db/19890.html 日期/时间 相关查询 1.获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 "SYSDATE"来指定查询的日期. 复制代码代码如下: SELECT TRUNC

利用360免费wifi搭建局域网让他人访问Oracle数据库

步骤很简答有 第一部:安装完360免费,点击运行 第二部:关闭本地计算机的防火墙(找了半天问题所在后来才发现防火墙没关..关于防火墙的作用以后地看看 还有子网掩码) 第三部:就是让他人计算机通过PSQL连接你的数据库了(要是不想配置服务名的话把服务名改写为ip地址/数据库名) ip地址可以通过查看ipconfig得到 或者查看本地连接 利用360免费wifi搭建局域网让他人访问Oracle数据库,布布扣,bubuko.com

IIS网站程序无法访问oracle

系统环境: win7 + iis7 asp.net应用程序访问oracle数据库时,报ORA-12560: TNS: 协议适配器错误. 使用c/s程序访问数据库没有问题,plsql也没问题,说明oracle驱动安装没有问题. 使用visual studio开发服务器没有问题,因此确定是iis设置或权限的问题. 接着,按常规做法,将oralce安装目录授权给network service,以及iis中匿名用户所指定的用户, 结果还是一样报错: 最后,更改应用程序池的用户标识为local syste

运行于64操作系统上的C#客户端通过WCF访问Oracle数据库不兼容问题

运行平台: Windows 7  64位操作系统 运行环境: IIS 7 编程语言:C# 数据库: 32位的Oracle 10g 运行原因:64位操作系统C#客户端程序通过WCF访问ORACLE数据库 结果产生异常:System.InvalidOperationException: 未在本地计算机上注册“MSDAORA”提供程序 客户端程序在本地运行能够正常访问Oracle数据库数据, 但通过WCF连接不上Oracle数据库, 一开始以为是"MSDAORA"驱动没装上,通过检查,MSD

客户端如何访问访问oracle 12c 64位的数据库

服务器A安装的oracle 12c 64位的数据库,机器B如何访问oracle数据库. 准备: 1.下载instantclient-basic-nt-12.1.0.2.0.zip,下载地址:http://pan.baidu.com/s/1c04lzSO 2.下载plsql,下载地址:http://pan.baidu.com/s/1bnHKDOj 安装步骤 1.安装orcle客户端 将下载的 instantclient-basic-nt-12.1.0.2.0.zip解压到机器B中非中文路径的目录下

如何解决JMeter通过JDBC访问Oracle和MySQL的问题

JMeter的手册中描述了如何访问 MySQL,但是没有说明如何访问 Oracle.对于没有 Java 应用开发经验和对 Oracle 不是特别熟悉的朋友,可以参考这篇文章来简单.快速的配置好 JMeter 中的 JDBC 连接和 JDBC Request. 步骤: 新建一个 Thread Group: 新增 JDBC Connection Configuration: 点击新增的 JDBC Connection Configuration ,需要修改的参数包括: Variable Name:可