【问题标题】:Using Oracle with EF code first首先将 Oracle 与 EF 代码一起使用
【发布时间】:2014-07-06 06:42:32
【问题描述】:
我用EF code first 6和SQL Server 2008R2为一家公司写了一个项目,现在该公司想将其DB切换到Oracle Database 10g Enterprise Edition Release 10.2.0.1.0,
- 如何找到合适的
ODP.NET 或ODAC 版本?
- 我可以为
Oracle 10g 使用ODAC 12c 或任何其他版本,或者每个Oracle 版本都有自己的ODAC 版本吗?
【问题讨论】:
标签:
database
oracle
entity-framework
ef-code-first
odp.net
【解决方案1】:
您可以只依赖 odp.net 托管驱动程序的最新版本,但请注意某些功能在您的 10g 上可能不可用(例如 APPLY)
ODAC 12c 第 2 版中 .NET 12.1 版的 Oracle 数据提供程序的更改
支持 APPLY 关键字
语言集成查询 (LINQ) 是一种 .NET 查询语言。在运行时,LINQ 在查询数据库之前被转换为本机数据库 SQL。在某些情况下,LINQ 在其 SQL 转换中使用非标准 APPLY 关键字来检索横向视图。 Oracle Database 和 ODP.NET 在 Oracle Database 12c Release 1 (12.1) 中支持 APPLY 关键字,以更全面地支持 LINQ
另一方面,oracle 没有官方支持 EF 代码优先 (link)
而且 odp.net 与 EF6 不兼容,因此您现在必须以 EF5 为目标 (link)
归根结底,您需要依赖两者中的任何一个
- Entity Framework 5 和 Odp.Net(免费,但没有官方对代码的优先支持)
- Entity Framework 6 和 Devart 点连接(付费但完整的代码优先支持)
就我而言,我已经成功实施了基于以下场景的解决方案
- Oracle 数据库 (11g)
- 通过 nuget (121.1.1) 的 Odp.net 托管驱动程序
- 不需要安装 Odac 客户端
- 实体框架 5