当 EF Core 1.x 系列和 2.0 版本之间经过重大的重写时,所有 EF Core 数据库 Provider 都受到重创。从那时起,各种私人和商业开发团队一直在努力填补这个空白。

正文

当 EF Core 1.x 系列和 2.0 版本之间经过重大的重写时,所有 EF Core 数据库 Provider 都受到重创。从那时起,各种私人和商业开发团队一直在努力填补这个空白。

在本文中,我们只关注生产就绪的 EF Core 数据库 Provider。那些仍处于预览或预发布状态的 Provider 将在以后的文章中介绍。

SQL Server

SQL Server 自然是由微软提供的,不过限制是仅适用于 SQL Server 2008 及更高版本。

对于 SQL Server 2000 和 2005,你可以使用原始的 Entity Framework。不过,这些版本不再受支持,所以不应继续在生产环境中使用。

PostgreSQL

在.NET 中访问 PostgreSQL 的事实标准是Npgsql 驱动程序和 EF Core 数据库 Provider,不过它们并不是唯一的选择。

Devart 为 PostgreSQL 提供了一个叫作dotConnect的商业版 Provider。这项产品的宣传语如下所示:

用于 PostgreSQL 的 dotConnect 提供了与 PostgreSQL 数据库的高性能连接以及很多创新的开发工具和技术。它支持 PostgreSQL 的大量特定功能,例如 SSL 连接、PostgreSQL 通知、PostgreSQL 批量数据加载、GEOMETRY、PostgreSQL ARRAY 类型,等等。

除了 ADO.NET 驱动程序,“dotConnect 还支持 ADO.NET Entity Framework、NHibernate 和 LinqConnect(以前是 LINQ to PostgreSQL)”。最后一个是基于微软的 LINQ to SQL ORM。

SQLite

微软的 SQLite Provider是基于SQLitePCL的,SQLitePCL 是 SQLite 的一个实现,一个“可移植的类库”框架。PCL 是.NET 标准的前身和子集。需要注意的是,这与SQLite 官方的.NET 标准驱动程序是相互独立的。当微软在实现 SQLite 数据库 Provider 时,这些官方驱动程序还不可用。

如果你认为微软的驱动程序还不够高效,Devart 也提供了一个SQLite 驱动程序和 EF Provider。

MySQL

一些团队提供了 MySQL 数据 Provider,首当其冲的是Oracle 提供的官方 MySQL Provider。

它的问题是底层的 MySQL 数据库驱动程序声誉不好。虽然是开源的,但它采用的是 GPLv2 许可,GPLv2 是一个相当严格的许可,在.NET 社区中并不常见。但真正的问题是 Oracle 的 MySQL 驱动程序不支持异步调用。根据 MySqlConnector 团队透露,它只是使用了其他线程来执行同步 I/O。

因此,这个团队从头开始创建MySqlConnector。它是异步的,并采用了 MIT 许可。Pomelo Foundation 的 EF Core MySQL 数据库 Provider就是基于 MySqlConnector 构建的。

同样,Devart 提供了 MySQL 数据库驱动程序和 EF Core Provider。它们的独特功能包括“特定于 MySQL 的功能,如 SSL 和 SSH 连接、嵌入式服务器、压缩协议、HTTP 通道,等等”。

Firebird

Firebird 数据库在.NET 社区中并没有得到很多关注,但它已经存在了很长时间。它最初是基于 Borland 的开源版 InterBase,但大部分代码在过去 19 年中被重写过。

除了官方提供的 Firebird 数据库 Provider 外,Rafael Almeida 还提供了EntityFrameworkCore.FirebirdSql,它与 Firebird 2.x 数据库兼容。

Progress OpenEdge

微软正在更新 EF Core Provider 列表。Alex Wiese 最近推出的Progress OpenEdge EF Core Provider也才一个月左右。

微软 Access

对微软 Access 的支持主要来自一个意大利人(被称为 bubibubi)。他提供的库叫作EntityFrameworkCore.Jet,仅适用于.NET Framework。

之所以有这种限制,是因为 OleDB 不支持.NET Core,即使是在 Windows 上运行。这可能会在未来发生变化,因为很多 WinForms 和 WPF 应用程序无法在没有 OleDB 的情况下移植到.NET Core。除 Access 之外,很多应用程序使用 OleDB 驱动程序来读取 Excel 文件。

SQL Server Compact

自 2013 年以来,SQL Server Compact 已被弃用,并被 SQLite 取代,但很多应用程序仍然有一些数据保存在 SQL Server Compact 中。如果你是这种情况,可以考虑使用 Erik Ejlskov Jensen 提供的SQL Server Compact EF Core 数据库 Provider。

由于 SQL Server Compact 及其底层驱动程序的设计,它仅适用于.NET Framework。

DB2

来自 IBM 的强大但很少被谈及的数据库 DB2,针对 Windows、Linux 和 OSX 平台都需要单独的库。这三个库都直接由 IBM 提供。

Oracle

Oracle 最初打算在 2017 年末对微软.NET Core 托管的 ODP.NET 驱动程序进行认证。该计划于 2017 年 3 月公布,仅针对.NET Core 2.0。该计划于 2018 年 2 月进行了修订,预计将于 2018 年第 3 季度发布。由于错过了第二个截止日期,Oracle 尚未公开讨论其修订计划。

Devart 提供了一个商业版的Oracle 数据库驱动程序和 EF Core Provider。

原文地址:https://www.infoq.cn/article/Gk2v0dV7i_AC97lNisGY


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

EF Core 数据库 Provider 一览相关推荐

  1. EF Core数据库Provider一览

    当EF Core 1.x系列和2.0版本之间经过重大的重写时,所有EF Core数据库Provider都受到重创.从那时起,各种私人和商业开发团队一直在努力填补这个空白. 正文 当EF Core 1. ...

  2. [翻译 EF Core in Action 2.3] 理解EF Core数据库查询

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  3. 任务42:EF Core Migration

    任务42:EF Core Migration 任务42:EF Core Migration 右边的是在VS2017中使用的命令,左边是在VSCode 的DOS窗体中使用的 最新版本的core 2.2. ...

  4. EF Core:一统SQL和NoSQL数据库

    推出EF Core的初衷之一,就是开发出一种可在很少甚至不更改代码的情况下使用SQL和NoSQL数据库的模型.Microsoft正向此目标迈出第一步,发布了用于Azure Cosmos DB的实验性E ...

  5. 实现自己的.NET Core配置Provider之EF

    <10分钟就能学会.NET Core配置>里详细介绍了.NET Core配置的用法,另外我还开源了自定义的配置Provider:EF配置Provider和Yaml配置Provider.本文 ...

  6. asp.net mysql 创建变_[ASP.net教程]EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型...

    [ASP.net教程]EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型 0 2018-06-30 07:00:08 官方教程: ...

  7. 【ASP.NET Core】EF Core 模型与数据库的创建

    大家好,欢迎收看由土星卫视直播的大型综艺节目--老周吹逼逼. 今天咱们吹一下 EF Core 有关的话题.先说说模型和数据库是怎么建起来的,说装逼一点,就是我们常说的 "code first ...

  8. .net core发布 正在发现数据上下文_使用EF Core实现数据库读写分离

    以下文章来源于朝夕Net社区 ,作者Eleven 朝夕Net社区 朝气.丰富.活跃的.Net社区,朝夕教育携百万粉丝共同打造!有技术,有感悟,有新闻,有照片,有故事,还有梦想! [精选转载]| 作者/ ...

  9. ef mysql 数据模型,EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型...

    官方教程:https://docs.microsoft.com/en-us/aspnet/core/data/?view=aspnetcore-2.1 使用EF CodeFirst在MySql中创建新 ...

最新文章

  1. Netty学习笔记(一)Netty客户端源码分析
  2. 搞技术多少要有点危机意识,切不可温水煮青蛙
  3. 关于eclipse中文注释乱码的问题
  4. 基于JAVA+SpringBoot+Mybatis+MYSQL的在线购物商城系统
  5. pdo query获取mysql单行结果_php代码连不上mysql的可能?看看这个也许能给你点启发...
  6. python input函数的应用(接收用户的输入)
  7. Unity 可重复随机数
  8. Hive对比传统数据库区别
  9. Bailian2815 城堡问题【DFS】
  10. 蚂蚁金服 Java RPC 开源框架—SOFARPC
  11. 三星手机官方固件下载
  12. Springboot的Mybatis拦截器实现
  13. html5 3D地球转动动画js特效
  14. php 取余数函数,PHP取余函数介绍MOD(x,y)与x%y
  15. getResource和getResourceAsStream
  16. Intriguing properties of neural networks手动翻译
  17. 故障分析 | 数据库表空间被 rm 后,怎么处理
  18. 3.3程序设计框架架构基础相关知识点-技术
  19. WLAN驱动分析文档_gzc126_新浪博客
  20. 菜鸟网html dom对象,JavaScript学习指南

热门文章

  1. android设置时间widget,【Android】时间与日期Widget(DatePicker 与 TimePicker)
  2. Java多线程编程 — 锁优化
  3. Zabbix server is not running
  4. javascript 函数属性prototype(转)
  5. ORACLE利用STANDBY端RMAN备份进行数据恢复
  6. MySQL-5.5.33主从复制
  7. 异常检测之浅谈入侵检测
  8. serialization机制
  9. 开发们 点广告-赚点BT币
  10. Blazor 事件处理开发指南