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


 

如果你在使用 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命令未正确结束”

 

 

参考文章:https://www.cnblogs.com/GuZhenYin/p/10756548.html

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM