编写数据库提供程序Writing a Database Provider

有关编写 Entity Framework Core 数据库提供程序的信息,请参阅,希望通过Arthur Vickers编写 EF Core 提供程序

备注

自 EF Core 1.1 起,这些文章尚未更新,因此该时间以来发生了重大更改。
问题 681正在跟踪对此文档的更新。

EF Core 基本代码是开放源代码,并且包含多个可用作参考的数据库提供程序。 可以在https://github.com/aspnet/EntityFrameworkCore中找到源代码。 查看常用的第三方提供程序(例如NpgsqlPomelo MySQLSQL Server Compact)的代码可能也很有帮助。 特别是,设置这些项目是为了从和运行我们在 NuGet 上发布的功能测试。 强烈建议使用这种设置。

提供提供程序更改的最新状态Keeping up-to-date with provider changes

从2.1 版本开始,开始使用后,我们创建了一个可能需要对提供程序代码进行相应更改的更改日志。 这旨在帮助更新现有提供程序以使用 EF Core 的新版本。

在2.1 之前,我们使用了providers-bewareproviders-fyi标签作为 GitHub 问题,并提供了类似用途的拉取请求。 我们将 continiue 将这些标签用于问题,指出给定版本中的哪些工作项可能还需要在提供程序中完成工作。 providers-beware标签通常表示工作项的实现可能会中断提供程序,而providers-fyi标签通常意味着提供程序将不会中断,但可能仍需要更改代码,例如,启用新功能。

建议的第三方提供程序命名Suggested naming of third party providers

建议为 NuGet 包使用以下命名。 这与 EF Core 团队传递的包的名称一致。

<Optional project/company name>.EntityFrameworkCore.<Database engine name>

例如:

  • Microsoft.EntityFrameworkCore.SqlServer
  • Npgsql.EntityFrameworkCore.PostgreSQL
  • EntityFrameworkCore.SqlServerCompact40