【EFCORE笔记】数据库提供程序优化与单元测试

Entity Framework Core 支持通过不同的数据库提供程序访问许多不同的数据库,随着 .NET Core 的发展和开源社区的增长,提供程序也越来越多,基本满足所有数据库需求。

当前支持的提供程序

NuGet 程序包

支持的数据库引擎

维护商/供应商

备注/要求

有用的链接

Microsoft.EntityFrameworkCore.SqlServer

SQL Server 2008 及以上版本

EF Core 项目 (Microsoft)

 

docs

Microsoft.EntityFrameworkCore.Sqlite

SQLite 3.7 及以上版本

EF Core 项目 (Microsoft)

 

docs

Microsoft.EntityFrameworkCore.InMemory

EF Core 内存中数据库

EF Core 项目 (Microsoft)

仅用于测试

docs

Microsoft.EntityFrameworkCore.Cosmos

Azure Cosmos DB SQL API

EF Core 项目 (Microsoft)

仅预览版

博客

Npgsql.EntityFrameworkCore.PostgreSQL

postgresql

Npgsql 开发团队

 

docs

Pomelo.EntityFrameworkCore.MySql

MySQL、MariaDB

Pomelo Foundation 项目

 

自述文件

Pomelo.EntityFrameworkCore.MyCat

MyCAT 服务器

Pomelo Foundation 项目

仅预发行版

自述文件

EntityFrameworkCore.SqlServerCompact40

SQL Server Compact 4.0

Erik Ejlskov Jensen

.NET Framework

wiki

EntityFrameworkCore.SqlServerCompact35

SQL Server Compact 3.5

Erik Ejlskov Jensen

.NET Framework

wiki

FirebirdSql.EntityFrameworkCore.Firebird

Firebird 2.5 和 3.x

Jiří Činčura

 

docs

EntityFrameworkCore.FirebirdSql

Firebird 2.5 和 3.x

Rafael Almeida

 

wiki

MySql.Data.EntityFrameworkCore

MySQL

MySQL 项目 (Oracle)

 

docs

Oracle.EntityFrameworkCore

Oracle DB 11.2 及更高版本

Oracle

预发行

网站

IBM.EntityFrameworkCore

Db2、Informix

IBM

Windows 版本

博客

IBM.EntityFrameworkCore-lnx

Db2、Informix

IBM

Linux 版本

博客

IBM.EntityFrameworkCore-osx

Db2、Informix

IBM

macOS 版本

博客

EntityFrameworkCore.Jet

Microsoft Access 文件

Bubi

.NET Framework

自述文件

EntityFrameworkCore.OpenEdge

Progress OpenEdge

Alex Wiese

 

自述文件

Devart.Data.Oracle.EFCore

Oracle DB 9.2.0.4 及更高版本

DevArt

已付

docs

Devart.Data.PostgreSql.EFCore

PostgreSQL 8.0 及以上版本

DevArt

已付

docs

Devart.Data.SQLite.EFCore

SQLite 3 及以上版本

DevArt

已付

docs

Devart.Data.MySql.EFCore

MySQL 5 及以上版本

DevArt

已付

docs

未来的提供程序

Cosmos DB

我们一直在为 Cosmos DB 开发 EF Core 提供程序, 这是我们首次推出的基于 NOSQL 的文档的数据库提供程序,通过此次尝试,将为今后发布的EF Core 以及其他非关系提供程序的设计提供可能,这个包可以从 NuGet 库获取预览版。

 

Oracle 官方提供程序

Oracle 官方团队已发布适用于EF Core Oracle 提供程序的Beta 版, 可通过 NuGet 获取预览版。

 

向应用程序添加数据库提供程序

EF Core 的大多数数据库提供程序都是作为NuGet 包分发的,可通过控制台或PMC进行安装。

dotnet add package provider_package_name

 install-package provider_package_name

  

安装后,需采用 OnConfiguring 方法或AddDbContext 方法(如果使用的是依赖关系注入容器)在DbContext 中配置提供程序。

optionsBuilder.UseSqlServer("connectionString");

  

很多提供程序针对模型的配置都是通用的,但特定的提供程序提供特定的配置选项。

SQL Server 提供程序支持使用内存优化表功能

SQL Server 内存优化表支持将整个表驻留在内存中,表数据有两个副本,第一个副本在内存中,第二个副本在硬盘上,两者保持同步,防止意外故障后导致的数据丢失,访问数据时,优先使用内存版本,所以性能较高。

 

modelBuilder.Entity<Blog>().ForSqlServerIsMemoryOptimized();

 

  

SQLite 数据库提供程序

此数据库提供程序允许将 Entity Framework Core 与 SQLite 一起使用,该提供程序作为 Entity Framework Core 项目的组成部分进行维护。

 

In-Memory 数据库提供程序

此数据库提供程序允许将Entity Framework Core 和内存数据库一起使用。 这对测试非常有用,尽管内存中模式下的SQLite 提供程序可能是针对关系数据库的更合适的测试替代,该提供程序作为Entity Framework Core 项目的组成部分进行维护。

 

编写自己的数据库提供程序

So you want to write an EF Core provider

我们建议使用以下命名规则,这也是微软 EF Core 团队所使用的规则。

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

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

 

posted @ 2021-04-01 23:45  LBO.net  阅读(139)  评论(0编辑  收藏  举报
//返回顶部