使用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,因此导致First
、FirstAsync
、FirstOrDefault
、FirstOrDefaultAsync
无法使用。
解决方案
//在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"));
分类:
dotNetCore
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~