21

顶级实体框架的核心工具与扩展

 3 years ago
source link: http://developer.51cto.com/art/202009/626419.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Entity Framework Visual Editor

Entity Framework Visual Editor不但支持Entity Framework Core、Entity Framework 6及其更高的版本,而且能够作为Visual Studio 2019的扩展。您可以从Visual Studio市场的链接-- https://marketplace.visualstudio.com/items?itemName=michaelsawczyn.EFDesigner ,下载该工具。作为一个代码生成器,它为继承和(单向和双向)关联提供了支持,并允许对持久性的类,进行简单、快速的可视化设计。

nHydrate ORM for Entity Framework

nHydrate是针对Microsoft实体框架的一种开源且成熟的ORM方案。值得注意的是,nHydrate并非实体框架的替代品,而是为它添加了一个建模层,以协助用户无缝地可视化和编写自定义的代码与扩展。

在开发企业级应用程序时,您可能需要修改或更新自己的底层数据库。此类更改虽然鲜少发生,但是您需要通过更新对象模型,以保证它与数据库中驻留的对象相同步。也就是说,任何在应用程序中出现的功能性更改,都能够触发数据库的变更。据此,您可以利用nHydrate进行建模,而不必担心遗漏对于底层数据库的相应更改。同时,您在使用nHydrate从数据库中生成模型时,它将自动创建数据库的更改脚本,以实现模型与数据库的同步。

您可以从Visual Studio市场的链接-- https://marketplace.visualstudio.com/items?itemName=nHydrateorg.nHydrateORMModeler ,下载该工具的最新版本。此外,它在Github上的链接为--https://github.com/nHydrate/nHydrate

EF Core Power Tools

作为Visual Studio的一种扩展,EF Core Power Tools提供了实用的DbContext功能。而且这些功能已被添加到了VS Solution Explorer的上下文菜单中。因此,总的说来,EC Core Power Tools的显著功能包括:

i. 支持针对SQL Server、Azure SQL DB、PostgreSQL、MySQL、SQLite、Oracle和SQL Server Compact等数据库的反向工程。

ii. 支持各种迁移工具。

iii. 支持模型的绘图和脚本的编制。

您可以从Visual Studio市场的链接-- https://marketplace.visualstudio.com/items?itemName=ErikEJ.EFCorePowerTools ,下载该工具。

CatFactory

作为一种内置了C#并兼容.NET Core的scaffolding引擎,CatFactory支持Entity Framework Core、Dapper和.NET Core。它可以从现有的SQL Server实例中导入整个数据库,以便scaffold(映射)某个目标技术。您可以从Github链接-- https://github.com/hherzl/CatFactory ,下载该工具。

下面我们来讨论一下时下流行的实体框架扩展。

Microsoft.EntityFrameworkCore.AutoHistory

作为实体框架核心的一个重要插件,您可以利用名为AutoHistory来自动记录数据的更改历史,并将这些更改存储到一个名为AutoHistories的数据库表中。当然值得注意的是,默认情况下此功能是被禁用的。因此,若想启用该功能,您需要在DbContext类中重写OnModelCreating方法,然后使用ModelBuilder实例,去调用EnableAutoHistory()的扩展方法。此外,还有另一种名为EnsureAutoHistory的扩展方法,可为特定的DbContext自动保留了历史记录。

您可以在软件包管理控制台中使用如下命令,来进行安装:

PM> Install-Package Microsoft.EntityFrameworkCore.AutoHistory 

它在Github上的链接为--https://github.com/Arch/AutoHistory。

EFCore.BulkExtensions

在开发以数据为中心的企业级应用程序时,您可能经常需要批量地执行CRUD(创建、检索、更新、删除)等相关操作,此时EFCore.BulkExtensions正好能派上用场。它是一种轻量级的扩展,可被用于在SQL Server和SQLite上进行批量的CRUD操作。

您可以在软件包管理控制台中使用如下命令,来进行安装:

PM> Install-Package EFCore.BulkExtensions 

它在Github上的链接为-- https://github.com/borisdj/EFCore.BulkExtensions

Entity Framework Plus

作为一个免费的开源库,Entity Framework Plus可用于扩展Entity Framework 6和Entity Framework Core的各项功能。换句话说,它解决了实体框架的局限性,并为其添加了一些必备的功能。您可以利用该扩展库执行多项操作,其中包括:过滤,审核,缓存,查询,批量删除,以及批量更新等。

您可以从其官网链接-- https://entityframework-plus.net/ ,下载该工具。

Microsoft.EntityFrameworkCore.UnitOfWork

该插件既支持存储库和工作单元的各种设计模式,又能够为多个数据库和分布式事务提供支持。

您可以在软件包管理控制台中使用如下命令,来进行安装:

PM> Install-Package Microsoft.EntityFrameworkCore.UnitOfWork 

它在Github上的链接为-- https://github.com/Arch/UnitOfWork

EfCore.InMemoryHelpers

EfCore.InMemoryHelpers插件为实体框架核心的内存数据库提供程序(In-Memory Database Provider)准备了一个包装器。该提供程序可被用于处理内存中各种数据库。当然,在SQL Server 2014中也包含了对于内存数据库的支持。总的说来,EfCore.InMemoryHelpers插件的主要特征包括:

  • 开源。
  • 支持内存数据库。
  • 支持索引验证。

您可以在软件包管理控制台中使用如下命令,来进行安装:

PM> Install-Package EfCore.InMemoryHelpers 

它在Github上的链接为-- https://github.com/FelixBoers/EfCore.InMemoryHelpers

EntityFrameworkCore.Cacheable

缓存,既是一项技术,也是一种更为精确的策略。它可以将稍旧的数据存储到内存中,以提高应用程序的性能。据此,所有后续的请求都可以在内存的高速缓存中,被检索到,而不必从文件系统、或数据库中里去检索数据。随着向(从)内存中读取(写入)数据的加快,整体性能也得到了提升。

EntityFrameworkCore.Cacheable是一种实体框架的高性能二级查询缓存扩展库。它支持对所有缓存类型的结果进行查询。

您可以在软件包管理控制台中使用如下命令,来进行安装:

PM> Install-Package EntityFrameworkCore.Cacheable 

它在Github上的链接为--https://github.com/SteffenMangold/EntityFrameworkCore.Cacheable。

总结

在上文中,我们讨论了实体框架和实体框架核心的各种顶级工具和扩展。您可以根据实际应用程序的需求,从中做出正确的选择。

原标题:Top Entity Framework Core Tools and Extensions ,作者:Joydip Kanjilal

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【责任编辑:庞桂玉 TEL:(010)68476606】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK