• 欢迎光临~

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

开发技术 开发技术 2022-12-15 次浏览

使用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"));
喜欢 (0)