我正在使用.NET实体框架与Oracle。
Oracle数据库有两个主要提供商:一个是Oracle的正式版本(“ODP” - Oracle数据库提供商),另一个是“Devart dotConnect for Oracle”。
在两个提供商的文档中,它写道它们支持Oracle 12c,11g,10g ......
但是如果我在Oracle 11g中使用它们中的任何一个,我发现它们都生成仅受Oracle 12c和更新版本支持的命令。示例:OUTER APPLY。
是否有任何类型的配置要求提供者根据他们连接的DBMS版本使用SQL命令?
提供商不应该自动执行此操作吗?
答案 0 :(得分:1)
APPLY关键字生成并非由Oracle EF Driver完成,它由Entity Framework本身完成。据我了解,他们给提供者的解析树几乎迫使它使用APPLY。如果它与您正在使用的数据库不存在,那么您会收到错误。这不是Oracle特定的情况。旧版本的SQL Server和其他数据库供应商也没有此关键字。
Oracle通过将关键字添加到Oracle 12c来应对这种情况。没错,APPLY是专门为EF添加的。你可以谷歌在互联网上找到一些文章,建议如何编写最小化APPLY生成的EF代码。