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