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-8。
EF Core Power Tools CLI
EF Core Power Tools CLI 是一个 .NET 全局命令行工具。 它支持从现有数据库和 SQL Server DACPAC 对 DbContext 和实体类进行高级反向工程。 对于 EF Core:6-8。
LLBLGen Pro
LLBLGen Pro 是一种实体建模解决方案,包含对 Entity Framework 和 Entity Framework Core 的支持。 借助它可轻松通过 Database First 或 Model First 定义实体模型并将其映射到数据库中,使你可以立即开始编写查询。 针对 EF Core:2-8。
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。
DevMagic EF Core Sidekick
EF Core Sidekick 是一个 Visual Studio 扩展,可增强 Visual Studio 中自动代码生成的功能。 它提供了一组工具和模板,用于从现有数据库生成 EF Core 实体和派生的 DbContext,然后从实体生成服务和 REST API。 对于 EF Core:6-8。
实体框架可视化编辑器
Entity Framework Visual Editor 是一种 Visual Studio 扩展,其中增添了 O/RM 设计器用于 EF 6 和 EF Core 类的可视化设计。 代码是通过 T4 模板生成的,因此可自定义来满足任意需求。 它支持继承、单向和双向关联,支持枚举,还能用颜色标识类并添加文本块来解释潜在不可预测的设计部分。 针对 EF Core:2-8。
IWAPI
IWAPI(即时 Web API)是 .NET Core 的基架引擎,可以自动生成 DbContext 类、实体、模型,并基于任何 SQL Server 数据库创建工作 Web API。
efmig
efmig 是一款多平台 GUI 应用程序,可在使用 Entity Framework Core 时加快日常开发速度。 它涵盖了最常用的用例,例如迁移代码和脚本生成,使用简单的一键式界面即可。 针对 EF Core:2-8。
EFCore.Visualizer
使用 Entity Framework Core 查询计划调试器可视化工具,可直接在 Visual Studio 中查看查询的查询计划。 目前,可视化工具支持 SQL Server 和 PostgreSQL。 对于 EF Core:7-8。
扩展
Microsoft.EntityFrameworkCore.AutoHistory
一个插件库,它可用于将 EF Core 执行的数据更改自动记录到历史记录表中。 针对 EF Core:2-6。
EFCoreSecondLevelCacheInterceptor
二级缓存是一个查询缓存。 EF 命令的结果将存储在该缓存中,这样相同的 EF 命令将从该缓存检索其数据,而不是再次针对数据库进行执行。 针对 EF Core:3-8。
EntityFrameworkCore.Scaffolding.Handlebars
允许结合使用 Entity Framework Core 工具链和 Handlebars 模板对基于现有数据库反向工程处理的类进行自定义。 针对 EF Core:2-8。
NeinLinq.EntityFrameworkCore
NeinLinq 扩展了 Entity Framewor 等 LINQ 提供程序,让用户能够使用可转换谓词和选择器重复使用函数、重新编写查询并构建动态查询。 针对 EF Core:3-8。
EFCore.BulkExtensions
用于批量操作(插入、更新和删除)的 EF Core 插件。 针对 EF Core:2-8。
Bricelam.EntityFrameworkCore.Pluralizer
添加设计时复数形式。 针对 EF Core:2-8。
Verify.EntityFramework
扩展 Verify,以允许使用 EntityFramework 进行快照测试。 针对 EF Core:3-8。
LocalDb
提供围绕 SQL Server Express LocalDB 的包装器,以简化针对实体框架的运行测试。 针对 EF Core:3-8。
EntityFrameworkCore.Projectables
EF Core 的灵活投影魔术。 在查询中使用属性、方法和扩展方法,无需客户端评估。 对于 EF Core:3-6、8。
EntityFrameworkCore.Triggered
EF Core 的触发器。 在将 DbContext 中的更改提交到数据库之前和之后对其进行响应。 触发器是完全异步的,支持依赖关系注入、继承、级联等。 对于 EF Core:3-6。
Entity Framework Plus
扩展 DbContext 的功能,例如:包括筛选器、审核、缓存、查询未来、成批删除、批量更新等。 针对 EF Core:2-8。
网站 | GitHub 存储库 | NuGet
实体框架扩展
通过高性能批量操作扩展 DbContext:BulkSaveChanges、BulkInsert、BulkUpdate、BulkDelete、BulkMerge 等。 针对 EF Core:2-8。
Expressionify
添加了对在 LINQ lambda 中调用扩展方法的支持。 对于 EF Core:3-6。
EntityLinq
用于关系数据库的备用(不基于 MS 的)语言集成查询 (LINQ) 技术。 它允许你使用 C# 编写强类型 SQL 查询。 针对 EF Core:3-8。
- 完全支持使用 C# 创建查询:可在 lambda 表达式内使用多个语句,还可使用变量、函数等。
- 与 SQL 之间不存在语义缺口。 EntityLinq 将 SQL 语句(如
SELECT
、FROM
、WHERE
)声明为第一类 C# 方法,将熟悉的语法与 intellisense、类型安全性和重构结合起来。
因此,SQL 成为了“又一个”本地公开其 API 的类库,可以说是“集成了语言的 SQL”。
EFCore.NamingConventions
这会自动使所有表和列的名称都有 snake_case、全部大写或全部小写命名。 针对 EF Core:3-8。
EFCore.CheckConstraints
通过此插件,可选择加入某些检查约束 - 只需将其激活,系统就会自动为你创建这些约束。 针对 EF Core:5-8。
SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime
为 NodaTime 类型的 SQL Server 添加对 EntityFrameworkCore 的本机支持。 针对 EF Core:3-8。
EntityFrameworkCore.SqlServer.HierarchyId
注意
自 EF Core 8 起,EF Core 中直接支持 SQL Server hierarchyid 数据类型。
向 SQL Server EF Core 提供程序添加 hierarchyid 支持。 针对 EF Core:3-7。
linq2db.EntityFrameworkCore
将 LINQ 查询转换为 SQL 表达式的替换转换器。 针对 EF Core:2-8。
现已开始支持高级 SQL 功能,如 CTE、大容量复制、表提示、窗口函数、临时表和数据库端创建/更新/删除操作。
EFCore.SoftDelete
软删除实体的实现。 对于 EF Core:3-6。
EntityFrameworkCore.ConfigurationManager
扩展 EF Core 以通过 App.config 解析连接字符串。针对 EF Core:3-8。
分离的映射器
包含组合/聚合处理的 DTO 实体映射器(类似于 GraphDiff)。 针对 EF Core:3-8。
EntityFrameworkCore.Sqlite.NodaTime
使用 SQLite 时,添加对 NodaTime 类型的支持。 针对 EF Core:5-8。
ErikEJ.EntityFrameworkCore.SqlServer.Dacpac
从 SQL Server 数据层应用程序包 (.dacpac) 对 EF Core 模型启用反向工程。 对于 EF Core:6-8。
ErikEJ.EntityFrameworkCore.DgmlBuilder
生成可视化 DbContext 的 DGML(图形)内容。 将 AsDgml() 扩展方法添加到 DbContext 类。 对于 EF Core:6-7。
ErikEJ.EntityFrameworkCore.SqlServer.SqlQuery
注意
自 EF Core 8 起,EF Core 中直接支持对未映射的类型进行原始 SQL 查询。
提供 SqlQueryAsync<T>
和 SqlQueryValueAsync<T>
方法以帮助你从原始 SQL 查询填充任意类或基元类型列表。 对于 EF Core:6-7。
ErikEJ.EntityFrameworkCore.SqlServer.DateOnlyTimeOnly
注意
自 EF Core 8 起,EF Core 中直接支持 SQL Server DateOnly
和 TimeOnly
映射。
将 DateOnly
和 TimeOnly
.NET 类型与 EF Core SQL Server 提供程序配合使用。 对于 EF Core:6-7。
EntityFramework.Exceptions
当使用 Entity Framework Core 时,所有数据库异常都包装在 DbUpdateException 中。 EntityFramework.Exceptions 处理所有特定于数据库的详细信息,以找出违反了哪一项约束,并便于你在查询违反数据库约束时使用类型化异常(如 UniqueConstraintException
、CannotInsertNullException
、MaxLengthExceededException
、NumericOverflowException
、ReferenceConstraintException
)。
支持 SQL Server、Postgres、MySql、SQLite 和 Oracle。 针对 EF Core:3-8。
EntityFrameworkCore.FSharp
为 EF Core 增加了 F# 设计时支持。 对于 EF Core:5-6。
EntityFrameworkCore.VisualBasic
为 EF Core 增加了 VB 设计时支持。 针对 EF Core:5-8。
Krzysztofz01.EFCore.QueryFilterBuilder
实体框架的扩展,可用于创建和管理多个查询筛选器。 对于 EF Core:5-7。
Pagination.EntityFrameworkCore.Extensions
这是 EntityFrameworkCore 上的分页库。 可以很好地作为扩展与 Entity Framework Core 协同工作,且同时支持异步和同步。 它还具有许多常用的实用功能,尤其常用于 Web 开发中。 针对 EF Core:2-7。
Laraue.EfCoreTriggers
用于在 Context.OnModelCreating
中声明触发器的 Fluent API,这些触发器稍后会内置到迁移中。 Postgres、MySQL、SQL Server 和 SQLite 的提供程序。 针对 EF Core:5-8。
EntityCloner.Microsoft.EntityFrameworkCore
使用 EF Core 配置克隆实体。 可以使用 Include
方法来指定要克隆的关联数据。 针对 EF Core:5-8。
Zomp EF Core 扩展
为 EF Core 提供窗口(分析)函数和二进制函数。 提供程序:SQL Server、SQLite、PostgreSQL。 对于 EF Core:6-8。
Ainoraz.EFCore.IncludeBuilder
用于提供替代 Include
语法的 EF Core 扩展,以便更好地支持以下场景:
- 在同一级别(同级)加载多个实体。
- 编写独立于嵌套级别的扩展方法。
对于 EF Core:6-7。
实体框架标尺
添加反向工程模型的设计时自定义,包括:
- 类、属性和导航命名
- 跳过任何架构、表或列的基架。
- 重写属性类型,尤其是对于枚举。
- EF6 EDMX 支持,提供从 EF6 到 EF Core 的流畅三步升级路径。
对于 EF Core:6-8。
GitHub 存储库 | CLI 工具 NuGet | 设计 NuGet
LessCode.EFCore.StronglyTypedId
可以自动为实体生成 strongly-typed-id 类的源生成器。 针对 EF Core:7。
Microsoft.EntityFrameworkCore.DynamicLinq
借助动态 LINQ 库,可以使用动态字符串执行查询,并提供一些实用工具方法,例如 ParseLambda、Parse 和 CreateClass。 针对 EF Core:2-8。
网站 | GitHub 存储库 | NuGet
EfCoreNexus.Framework
EfCoreNexus 可帮助将实体框架核心集成到 blazor 应用中。 通过反射,它会自动添加实体类,并为这些类提供基本的 crud 功能,而无需编写额外的代码。
针对 EF Core:8。
协调器
通过插入、更新和删除个别实体,将存储中的实体图更新为给定的实体图。 对于 EF Core:6-7。
AutoCompute
EF Core 中的持久化计算属性,在保存更改时自动更新。 针对 EF Core:8。
API 集成
这些包旨在直接与 EF Core 集成来公开各种 API。
.NET Aspire
通过简化对云原生应用的配置和互连的管理来提升本地开发体验。 针对 EF Core:8。
网站 | GitHub 存储库 | NuGet
HotChocolate
在任何资源之上构建你自己的 GraphQL 终结点。
GraphQL.EntityFramework
将实体框架 IQueryable
添加到 GraphQL。 对于 EF Core:6-8。
EntityGraphQL
具有紧密 EntityFramework 集成的 GraphQL 服务器。 针对 EF Core:5-8。
OData
一种标准,用于实现具有发现、筛选、排序、投影、导航、批量操作等规范的 REST API。
不支持的 EF Core 版本的扩展
用于 Entity Framework 的 nHydrate ORM
为 Entity Framework 创建强类型的可扩展类的 O/RM。 生成的代码为 Entity Framework Core。 二者没有任何区别。 这不能替代 EF 或自定义 O/RM。 它是一种视觉对象建模层,可让团队管理复杂的数据库架构。 它适用于 Git 等 SCM 软件,允许多用户访问你的模型,并最大限度减少冲突。 安装程序可跟踪模型更改并创建升级脚本。 对于 EF Core:3.
Microsoft.EntityFrameworkCore.UnitOfWork
Microsoft.EntityFrameworkCore 的一个插件,它支持存储库、工作模式单元,并支持多个具有具有所支持分布式事务的数据库。 对于 EF Core:2-3。
Toolbelt.EntityFrameworkCore.IndexAttribute
恢复 [Index] 属性(带有用于模型构建的扩展)。 对于 EF Core:2-5。
EfCoreTemporalTable
注意
自 EF Core 6 起,直接在 EF Core 中支持 SQL Server 临时表。
使用下列引入的扩展方法对你喜爱的数据库轻松执行时态查询:AsTemporalAll()
、AsTemporalAsOf(date)
、AsTemporalFrom(startDate, endDate)
、AsTemporalBetween(startDate, endDate)
、AsTemporalContained(startDate, endDate)
。 对于 EF Core:3-5。
EntityFrameworkCore.TemporalTables
注意
自 EF Core 6 起,直接在 EF Core 中支持 SQL Server 临时表。
适用于 Entity Framework Core 的扩展库,使用 SQL Server 的开发人员可通过它轻松使用时态表。 对于 EF Core:2-5。
Dabble.EntityFrameworkCore.Temporal.Query
注意
自 EF Core 6 起,直接在 EF Core 中支持 SQL Server 临时表。
Entity Framework Core 3.1 的 LINQ 扩展,目的是支持 Microsoft SQL Server 临时表查询。 对于 EF Core:3.
EntityFrameworkCore.NCache
NCache Entity Framework Core 提供程序是一个分布式二级缓存提供程序,用于缓存查询结果。 分布式 NCache 体系结构使其更具伸缩性和高可用性。 对于 EF Core:2-3。
Ramses
生命周期挂钩(用于 SaveChanges)。 对于 EF Core:2-3。