如果你在使用 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