database - 首先将 Oracle 与 EF 代码结合使用

标签 database oracle entity-framework ef-code-first odp.net

我为一家公司用EF code first 6SQL Server 2008R2写了一个项目,现在公司想把数据库换成Oracle Database 10g Enterprise版本发布 10.2.0.1.0,

  • 如何找到合适的 ODP.NETODAC 版本?
  • 我可以使用 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/

相关文章:

java - CSV 与 XML,哪一种存储数据效率更高

MYSQL极难Select查询

sql - 选择 FOR UPDATE SKIP LOCKED 时,为什么行对多个 session 可见?

json - Oracle JSON 交付到 Azure

.net - 如何将 'Tags' 添加到我的简单博客文章类库和存储库中?

c# - 为什么 Linq to Entity Select Method 翻转投影列表属性?

python - 交易中的交易

php - 保护 PHP 应用程序的安全

oracle - PL/SQL 以数据库对象存在为条件进行编译

asp.net-mvc - 在 Entity Framework MVC 中更新子实体