Oracle.EntityFrameworkCore使用时报错:ORA-00933:SQL命令未正确结束

本文介绍在使用Oracle.EntityFrameworkCore进行分页查询或其他数据操作时,如何解决“ORA-00933:SQL命令未正确结束”的错误。通过正确配置UseOracleSQLCompatibility方法,指定Oracle数据库版本(如11g或12g),可以有效避免该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你在使用 Oracle.EntityFrameworkCore 在执行一些分页查询或者其他数据操作时,遇到“ORA-00933:SQL命令未正确结束”,

 

请先检查你的DbContext中UseOracle(...)的写法:

services.AddDbContextPool<PartnerDbContext>(options =>
{
    options.UseOracle(GetConnectionString(configuration, DatabaseType.Oracle));// 这是错误的写法,默认是12g版本的语法
}, poolSize: 64);

 

主要是因为Oracle11和Oracle12的SQL语法上有较多不同的地方,所以我们需要在UseOracle时进行指定版本的数据库使用才能避免这个错误的出现。

正确的写法如下:

            services.AddDbContextPool<PartnerDbContext>(options =>
            {
                options.UseOracle(GetConnectionString(configuration, DatabaseType.Oracle),b=>b.UseOracleSQLCompatibility("11"))
            }, poolSize: 64);

通过UseOracleSQLCompatibility方法,里面传递11指的是Oracle11g版本,如果是12g版本,请传递12

 

这样就能避免再次出现:“ORA-00933:SQL命令未正确结束”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值