使用EFcore连接Oracle数据时出现的错误及解决方案(Oracle版本指定错误)

使用EFcore连接Oracle数据时出现的错误及解决方案(Oracle版本指定错误)

程序环境

1,DotNet版本 .net 6.0

2,EFcore版本:

  • Microsoft.EntityFrameWorkCore 6.0.11
  • Microsoft.EntityFrameWorkCore.Tools 6.0.11
  • Microsoft.EntityFrameWorkCore.Design 6.0.11
  • Microsoft.EntityFrameWorkCore.Relational 6.0.11
  • Microsoft.EntityFrameWorkCore.SqlServer 6.0.11
  • Oracle.EntityFrameWorkCore 6.21.61

代码内容

 var result =await _db.xxxx.AsNoTracking().FirstOrDefaultAsync(m => m.USERNO == userNo);

报错内容

ORA-00933:SQL命令未正确结束

故障原因

经过搜索发现可能因为与oracle数据库版本有关,经过查询发现Oracle版本是11g,而EFcore内指定的版本为 12g,因此导致FirstFirstAsyncFirstOrDefaultFirstOrDefaultAsync 无法使用。

解决方案

//在dbcontext中使用UseOracleSQLCompatibility("11")指定oracle版本 原先为12
 dbContextOptionsBuilder.UseOracle("User Id=user;Password=user;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))", b => b.UseOracleSQLCompatibility("11"));
posted @   铁憨憨的小小白  阅读(116)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示