有时,错误;ORA-00933“;在使用entity framework查询Oracle DB时发生,但在我重新启动webapp时,它会正常工作

有时,错误;ORA-00933“;在使用entity framework查询Oracle DB时发生,但在我重新启动webapp时,它会正常工作,oracle,entity-framework,Oracle,Entity Framework,我已经将EntityFramework5用于基于web的应用程序的Oralce数据库。有时(很少发生),会出现错误“ORA-00933”,但当我重新启动webapp时,它会再次工作。 这是日志: System.Data.EntityCommandExecutionException:运行时出错 执行命令定义。有关详细信息,请参见内部异常。 --->Oracle.ManagedDataAccess.Client.OracleException:ORA-00933:SQL命令未在处正确结束 Orac

我已经将EntityFramework5用于基于web的应用程序的Oralce数据库。有时(很少发生),会出现错误“ORA-00933”,但当我重新启动webapp时,它会再次工作。 这是日志:

System.Data.EntityCommandExecutionException:运行时出错 执行命令定义。有关详细信息,请参见内部异常。 --->Oracle.ManagedDataAccess.Client.OracleException:ORA-00933:SQL命令未在处正确结束 OracleInternal.ServiceObjects.OracleCommandImpl.VerifyExecution(OracleConnectionImpl connectionImpl、Int32和cursorId、布尔bThrowArrayBindRelatedErrors、, OracleException&ArrayBindML、Boolean和hasMoreRowsInDB的例外, 布尔bFirstitionDone)在 OracleInternal.ServiceObjects.OracleCommandImpl.ExecuteReader(字符串 commandText,OracleParameterCollection paramColl,CommandType 命令类型,OracleConnectionImpl connectionImpl, OracleDataReaderImpl&rdrImpl,Int32 longFetchSize,Int64 clientinitialobfs,OracleDependencyImpl或ldependencyimpl,Int64[] scnForExecution、Int64[]和SCNFrome执行、OracleParameterCollection& bindByPositionParamColl,Boolean&bBindParamPresent,Int64& internalInitialLOBFS、OracleException和ArrayBindML的Exception, Boolean仅用于描述,Boolean isFromEF)位于 Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteReader(布尔值 重新查询、布尔填充请求、命令行为)位于 Oracle.ManagedDataAccess.Client.OracleCommand.ExecutedDataReader(CommandBehavior 行为)在 System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,CommandBehavior)--内部异常结束 堆栈跟踪--at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,CommandBehavior)位于 System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext 上下文,ObjectParameterCollection parameterValues)位于 System.Data.Objects.ObjectQuery
1.GetResults(可空
forMergeOption)在
System.Data.Objects.ObjectQuery
1.System.Collections.Generic.IEnumerable.GetEnumerator()
在System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable
1 来源)在 System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source)
在MOS.DAO.histreaction.HisTreatmentGet.GetById(Int64-id, HisTreatmentSO(搜索)

这是代码“HisTreatmentGet.GetById”:


我试过在谷歌上搜索,但没有解决办法。任何人都可以给我建议吗?

Oracle实体框架的提供程序中有一个bug

似乎Oracle.ManagedDataAccess.EntityFramework.SqlGen.SqlSelectStatement.Top\s是被并行查询借用的罪魁祸首。这应该是线程静态(quick hack)或移动到某个上下文状态(适当的修复,例如到SqlGenerator)


Oracle支持部门没有回答。也就是说,有一个新版本的nuget包:。您可以试一试,看看问题是否解决。

您好,我也有类似的问题。EF抛出00933错误,但它是“随机”发生的(日志没有显示任何时间模式),并且只在一些请求上发生。像ctx.PHOTO.Where(x=>x.date>datetime.now.addDays(-1))不起作用,但是ctx.PHOTO.Where(x=>x.date>datetime.now.addDays(-2))起作用。我在寻找答案,但我到目前为止才找到你的帖子。
HIS_TREATMENT result = null;
try
{
    bool valid = true;
    using (var ctx = new AppContext())
    {
        var query = ctx.HIS_TREATMENT.AsQueryable().Where(p => p.ID == id);
        ...
        result = query.SingleOrDefault();
    }
}
catch (Exception ex)
{
    ....
}
return result;