EF Core 工具 & 扩展

这些工具和扩展为 Entity Framework Core 提供了额外功能。

重要

扩展由各种源构建,不作为 Entity Framework Core 项目的一部分进行维护。 考虑使用第三方扩展时,请务必评估其质量、授权、兼容性和支持等因素,确保其符合要求。 具体而言,为更早版本的 EF Core 构建的扩展可能需要更新,然后才适用于最新版本。

工具

EF Core Power Tools

EF Core Power Tools 是一种 Visual Studio 扩展,它在简单用户界面中公开各种 EF Core 设计时任务。 其中包括对现有数据库和 SQL Server DACPAC 中的 DbContext 和实体类的反向工程、对数据库迁移的管理,以及模型可视化效果。 针对 EF Core:6、7。

GitHub wiki

EF Core Power Tools CLI

EF Core Power Tools CLI 是一个 .NET 全局命令行工具。 它支持从现有数据库和 SQL Server DACPAC 对 DbContext 和实体类进行高级反向工程。 针对 EF Core:6、7。

GitHub 自述文件

LLBLGen Pro

LLBLGen Pro 是一种实体建模解决方案,包含对 Entity Framework 和 Entity Framework Core 的支持。 借助它可轻松通过 Database First 或 Model First 定义实体模型并将其映射到数据库中,使你可以立即开始编写查询。 针对 EF Core:2-7。

网站

Devart Entity Developer

Entity Developer 是一种用于 ADO.NET Entity Framework、NHibernate、LinqConnect、Telerik 数据访问和 LINQ to SQL 的强大 O/RM 设计器。 它支持 EF Core 模型的直观设计、使用“模型优先”或“数据库优先”的方式,还支持 C# 或 Visual Basic 代码生成。 针对 EF Core:2-7。

网站

实体框架可视化编辑器

Entity Framework Visual Editor 是一种 Visual Studio 扩展,其中增添了 O/RM 设计器用于 EF 6 和 EF Core 类的可视化设计。 代码是通过 T4 模板生成的,因此可自定义来满足任意需求。 它支持继承、单向和双向关联,支持枚举,还能用颜色标识类并添加文本块来解释潜在不可预测的设计部分。 针对 EF Core:2-7。

Visual Studio Marketplace

IWAPI

IWAPI(即时 Web API)是 .NET Core 的基架引擎,可以自动生成 DbContext 类、实体、模型,并基于任何 SQL Server 数据库创建工作 Web API。

网站

扩展

Microsoft.EntityFrameworkCore.AutoHistory

一个插件库,它可用于将 EF Core 执行的数据更改自动记录到历史记录表中。 针对 EF Core:2-6。

GitHub 存储库 | NuGet

EFCoreSecondLevelCacheInterceptor

二级缓存是一个查询缓存。 EF 命令的结果将存储在该缓存中,这样相同的 EF 命令将从该缓存检索其数据,而不是再次针对数据库进行执行。 针对 EF Core:3-7。

GitHub 存储库 | NuGet

EntityFrameworkCore.Scaffolding.Handlebars

允许结合使用 Entity Framework Core 工具链和 Handlebars 模板对基于现有数据库反向工程处理的类进行自定义。 针对 EF Core:2-7。

GitHub 存储库 | NuGet

NeinLinq.EntityFrameworkCore

NeinLinq 扩展了 Entity Framewor 等 LINQ 提供程序,让用户能够使用可转换谓词和选择器重复使用函数、重新编写查询并构建动态查询。 针对 EF Core:2-7。

GitHub 存储库 | NuGet

EFCore.BulkExtensions

用于批量操作(插入、更新和删除)的 EF Core 插件。 针对 EF Core:2-7。

GitHub 存储库 | NuGet

Bricelam.EntityFrameworkCore.Pluralizer

添加设计时复数形式。 针对 EF Core:2-7。

GitHub 存储库 | NuGet

Verify.EntityFramework

扩展 Verify,以允许使用 EntityFramework 进行快照测试。 针对 EF Core:3-7。

GitHub 存储库 | NuGet

LocalDb

提供围绕 SQL Server Express LocalDB 的包装器,以简化针对实体框架的运行测试。 针对 EF Core:3-7。

GitHub 存储库 | NuGet

EntityFrameworkCore.Projectables

EF Core 的灵活投影魔术。 在查询中使用属性、方法和扩展方法,无需客户端评估。 对于 EF Core:3、5、6。

GitHub 存储库 | NuGet

EntityFrameworkCore.Triggered

EF Core 的触发器。 在将 DbContext 中的更改提交到数据库之前和之后对其进行响应。 触发器是完全异步的,支持依赖关系注入、继承、级联等。 对于 EF Core:3、5、6。

GitHub 存储库 | NuGet

Entity Framework Plus

扩展 DbContext 的功能,例如:包括筛选器、审核、缓存、查询未来、成批删除、批量更新等。 针对 EF Core:2-7。

网站 | GitHub 存储库 | NuGet

实体框架扩展

通过高性能批量操作扩展 DbContext:BulkSaveChanges、BulkInsert、BulkUpdate、BulkDelete、BulkMerge 等。 针对 EF Core:2-7。

网站 | NuGet

Expressionify

添加了对在 LINQ lambda 中调用扩展方法的支持。 对于 EF Core:3、5、6。

GitHub 存储库 | NuGet

EntityLinq

用于关系数据库的备用(不基于 MS 的)语言集成查询 (LINQ) 技术。 它允许你使用 C# 编写强类型 SQL 查询。 对于 EF Core:3、5、6。

  • 完全支持使用 C# 创建查询:可在 lambda 表达式内使用多个语句,还可使用变量、函数等。
  • 与 SQL 之间不存在语义缺口。 EntityLinq 将 SQL 语句(如 SELECTFROMWHERE)声明为第一类 C# 方法,将熟悉的语法与 intellisense、类型安全性和重构结合起来。

因此,SQL 成为了“又一个”本地公开其 API 的类库,可以说是“集成了语言的 SQL”。

网站 | NuGet

EFCore.NamingConventions

这会自动使所有表和列的名称都有 snake_case、全部大写或全部小写命名。 针对 EF Core:3-7。

GitHub 存储库 | NuGet

EFCore.CheckConstraints

通过此插件,可选择加入某些检查约束 - 只需将其激活,系统就会自动为你创建这些约束。 针对 EF Core:5、6、7。

GitHub 存储库 | NuGet

SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime

为 NodaTime 类型的 SQL Server 添加对 EntityFrameworkCore 的本机支持。 针对 EF Core:3-7。

GitHub 存储库 | NuGet

EntityFrameworkCore.SqlServer.HierarchyId

向 SQL Server EF Core 提供程序添加 hierarchyid 支持。 针对 EF Core:3-7。

GitHub 存储库 | NuGet

linq2db.EntityFrameworkCore

将 LINQ 查询转换为 SQL 表达式的替换转换器。 针对 EF Core:2-7。

现已开始支持高级 SQL 功能,如 CTE、大容量复制、表提示、窗口函数、临时表和数据库端创建/更新/删除操作。

GitHub 存储库 | NuGet

EFCore.SoftDelete

软删除实体的实现。 对于 EF Core:3、5、6。

GitHub 存储库 | NuGet

EntityFrameworkCore.ConfigurationManager

扩展 EF Core 以通过 App.config 解析连接字符串。针对 EF Core:3-7。

GitHub 存储库 | NuGet

分离的映射器

包含组合/聚合处理的 DTO 实体映射器(类似于 GraphDiff)。 对于 EF Core:3、5、6。

GitHub 存储库 | NuGet

EntityFrameworkCore.Sqlite.NodaTime

使用 SQLite 时,添加对 NodaTime 类型的支持。 针对 EF Core:5、6、7。

GitHub 存储库 | NuGet

ErikEJ.EntityFrameworkCore.SqlServer.Dacpac

从 SQL Server 数据层应用程序包 (.dacpac) 对 EF Core 模型启用反向工程。 针对 EF Core:6、7。

GitHub 存储库 | NuGet

ErikEJ.EntityFrameworkCore.DgmlBuilder

生成可视化 DbContext 的 DGML(图形)内容。 将 AsDgml() 扩展方法添加到 DbContext 类。 针对 EF Core:6、7。

GitHub 存储库 | NuGet

ErikEJ.EntityFrameworkCore.SqlServer.SqlQuery

提供 SqlQueryAsync<T>SqlQueryValueAsync<T> 方法以帮助你从原始 SQL 查询填充任意类或基元类型列表。 针对 EF Core:6、7。

GitHub 存储库 | NuGet

ErikEJ.EntityFrameworkCore.SqlServer.DateOnlyTimeOnly

DateOnlyTimeOnly .NET 类型与 EF Core SQL Server 提供程序配合使用。 针对 EF Core:6、7。

GitHub 存储库 | NuGet

EntityFramework.Exceptions

当使用 Entity Framework Core 时,所有数据库异常都包装在 DbUpdateException 中。 EntityFramework.Exceptions 处理所有特定于数据库的详细信息,以找出违反了哪一项约束,并便于你在查询违反数据库约束时使用类型化异常(如 UniqueConstraintExceptionCannotInsertNullExceptionMaxLengthExceededExceptionNumericOverflowExceptionReferenceConstraintException)。

支持 SQL Server、Postgres、MySql、SQLite 和 Oracle。 对于 EF Core:3、5、6。

GitHub 存储库

EntityFrameworkCore.FSharp

为 EF Core 增加了 F# 设计时支持。 针对 EF Core 5、6。

GitHub 存储库 | NuGet

EntityFrameworkCore.VisualBasic

为 EF Core 增加了 VB 设计时支持。 针对 EF Core:5、6、7。

GitHub 存储库 | NuGet

Krzysztofz01.EFCore.QueryFilterBuilder

实体框架的扩展,可用于创建和管理多个查询筛选器。 针对 EF Core:5、6、7。

GitHub 存储库

Pagination.EntityFrameworkCore.Extensions

这是 EntityFrameworkCore 上的分页库。 可以很好地作为扩展与 Entity Framework Core 协同工作,且同时支持异步和同步。 它还具有许多常用的实用功能,尤其常用于 Web 开发中。 针对 EF Core:2-7。

GitHub 存储库 | NuGet

Laraue.EfCoreTriggers

用于在 Context.OnModelCreating 中声明触发器的 Fluent API,这些触发器稍后会内置到迁移中。 Postgres、MySQL、SQL Server 和 SQLite 的提供程序。 针对 EF Core:5、6、7。

GitHub 存储库 | NuGet

EntityCloner.Microsoft.EntityFrameworkCore

使用 EF Core 配置克隆实体。 可以使用 Include 方法来指定要克隆的关联数据。 针对 EF Core:5、6、7。

GitHub 存储库 | NuGet

Zomp EF Core 扩展

为 EF Core 提供窗口(分析)函数和二进制函数。 提供程序:SQL Server、SQLite、PostgreSQL。 针对 EF Core:6、7。

GitHub 存储库 | NuGet

Ainoraz.EFCore.IncludeBuilder

用于提供替代 Include 语法的 EF Core 扩展,以便更好地支持以下场景:

  • 在同一级别(同级)加载多个实体。
  • 编写独立于嵌套级别的扩展方法。

针对 EF Core:6、7。

GitHub 存储库 | NuGet

实体框架标尺

添加反向工程模型的设计时自定义,包括:

  • 类、属性和导航命名
  • 跳过任何架构、表或列的基架。
  • 重写属性类型,尤其是对于枚举。
  • EF6 EDMX 支持,提供从 EF6 到 EF Core 的流畅三步升级路径。

针对 EF Core:6、7。

GitHub 存储库 | CLI 工具 NuGet | 设计 NuGet

LessCode.EFCore.StronglyTypedId

可以自动为实体生成 strongly-typed-id 类的源生成器。 针对 EF Core:7。

GitHub 存储库

Microsoft.EntityFrameworkCore.DynamicLinq

借助动态 LINQ 库,可以使用动态字符串执行查询,并提供一些实用工具方法,例如 ParseLambda、Parse 和 CreateClass。 针对 EF Core:2-7。

网站 | GitHub 存储库 | NuGet

API 集成

这些包旨在直接与 EF Core 集成来公开各种 API。

HotChocolate

在任何资源之上构建你自己的 GraphQL 终结点。

GitHub 存储库 | NuGet

GraphQL.EntityFramework

将实体框架 IQueryable 添加到 GraphQL。 针对 EF Core:6、7。

GitHub 存储库 | NuGet

EntityGraphQL

具有紧密 EntityFramework 集成的 GraphQL 服务器。 针对 EF Core:5、6、7。

GitHub 存储库 | NuGet

OData

一种标准,用于实现具有发现、筛选、排序、投影、导航、批量操作等规范的 REST API。

GitHub 存储库 | NuGet

不支持的 EF Core 版本的扩展

用于 Entity Framework 的 nHydrate ORM

为 Entity Framework 创建强类型的可扩展类的 O/RM。 生成的代码为 Entity Framework Core。 二者没有任何区别。 这不能替代 EF 或自定义 O/RM。 它是一种视觉对象建模层,可让团队管理复杂的数据库架构。 它适用于 Git 等 SCM 软件,允许多用户访问你的模型,并最大限度减少冲突。 安装程序可跟踪模型更改并创建升级脚本。 对于 EF Core:3.

Github 存储库

Microsoft.EntityFrameworkCore.UnitOfWork

Microsoft.EntityFrameworkCore 的一个插件,它支持存储库、工作模式单元,并支持多个具有具有所支持分布式事务的数据库。 对于 EF Core:2、3。

GitHub 存储库

Toolbelt.EntityFrameworkCore.IndexAttribute

恢复 [Index] 属性(带有用于模型构建的扩展)。 对于 EF Core:2、3、5。

GitHub 存储库 | NuGet

EfCoreTemporalTable

注意

EF Core 6 起,直接在 EF Core 中支持 SQL Server 临时表。

使用下列引入的扩展方法对你喜爱的数据库轻松执行时态查询:AsTemporalAll()AsTemporalAsOf(date)AsTemporalFrom(startDate, endDate)AsTemporalBetween(startDate, endDate)AsTemporalContained(startDate, endDate)。 对于 EF Core:3、5。

GitHub 存储库 | NuGet

EntityFrameworkCore.TemporalTables

注意

EF Core 6 起,直接在 EF Core 中支持 SQL Server 临时表。

适用于 Entity Framework Core 的扩展库,使用 SQL Server 的开发人员可通过它轻松使用时态表。 对于 EF Core:2、3、5。

GitHub 存储库 | NuGet

Dabble.EntityFrameworkCore.Temporal.Query

注意

EF Core 6 起,直接在 EF Core 中支持 SQL Server 临时表。

Entity Framework Core 3.1 的 LINQ 扩展,目的是支持 Microsoft SQL Server 临时表查询。 对于 EF Core:3.

GitHub 存储库 | NuGet

EntityFrameworkCore.NCache

NCache Entity Framework Core 提供程序是一个分布式二级缓存提供程序,用于缓存查询结果。 分布式 NCache 体系结构使其更具伸缩性和高可用性。 对于 EF Core:2、3。

网站 | NuGet

Ramses

生命周期挂钩(用于 SaveChanges)。 对于 EF Core:2、3。

GitHub 存储库 | NuGet