我为一家公司用EF code first 6
和SQL Server 2008R2
写了一个项目,现在公司想把数据库换成Oracle Database 10g Enterprise版本发布 10.2.0.1.0
,
- 如何找到合适的
ODP.NET
或ODAC
版本? - 我可以使用
ODAC 12c
或任何其他版本的Oracle 10g
还是每个Oracle
版本都有自己的ODAC
版本?
最佳答案
您可以只依赖最新版本的 odp.net 托管驱动程序,但请注意您的 10g 上可能无法使用某些功能(例如 APPLY)
Oracle Data Provider for .NET Release 12.1 在 ODAC 12c 第 2 版中的变化 支持 APPLY 关键字 语言集成查询 (LINQ) 是一种 .NET 查询语言。在运行时,LINQ 在查询数据库之前被翻译成本地数据库 SQL。在某些情况下,LINQ 在其 SQL 转换中使用非标准的 APPLY 关键字来检索横向 View 。 Oracle Database 和 ODP.NET 在 Oracle Database 12c 第 1 版 (12.1) 中支持 APPLY 关键字,以更全面地支持 LINQ
另一方面,Oracle 首先没有对 EF 代码的官方支持 (link) 而且 odp.net 与 EF6 不兼容,因此您现在必须以 EF5 为目标 (link)
归根结底,您需要依赖两者中的任何一个
- Entity Framework 5 和 Odp.Net(免费但首先没有对代码的官方支持)
- Entity Framework 6 和 Devart dot connect(付费但完整的代码优先支持)
就我而言,我已经成功实现了基于如下场景的解决方案
- Oracle 数据库(11g)
- Odp.net 通过 nuget 管理的驱动程序 (121.1.1)
- 不需要安装 Odac 客户端
- Entity Framework 5
关于database - 首先将 Oracle 与 EF 代码结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23718538/