顶级实体框架的核心工具与扩展" title="顶级实体框架的核心工具与扩展">
【51CTO.com快译】实体框架(Entity Framework)是Microsoft提供的一种对象关系映射(Object Relational Mapper,ORM)型工具。作为目前十分流行的ORM工具,实体框架能够让开发人员通过对概念模型(而不是关系模型)进行编程,来创建以数据为中心的应用程序。据此,用户可以解决数据在应用程序中的表示方式、和实际存储在数据库中的方式,这两者之间的不匹配问题。
本文将按照如下列表顺序,和您一起讨论那些顶级的实体框架,以及实体框架核心(Entity Framework Core)的工具与扩展:-
工具类
- Devart Entity Developer
- Entity Framework Visual Editor
- nHydrate ORM for Entity Framework
- EF Core Power Tools
- CatFactory
扩展类
- Microsoft.EntityFrameworkCore.AutoHistory
- EFCore.BulkExtensions
- Entity Framework Plus
- Microsoft.EntityFrameworkCore.UnitOfWork
- EfCore.InMemoryHelpers
- EntityFrameworkCore.Cacheable
下面我们先来讨论一下时下流行的实体框架工具。
Devart Entity Developer
由Devart推出的Entity Developer是一个非常强大的建模和代码生成工具。它属于ORM工具范畴。Entity developer使您可以一目了然地可视化设计数据的访问层。由于Devart生成的数据访问层包含了各种自动生成的代码,因此其出错的可能性非常小。
Entity Developer在其官方网站上指出:“Entity Developer可以在一个统一的界面中帮助您设计各种.NET ORM模型。您可以通过购买单独的版本,以获得对所有ORM的支持。”
该方案允许使用“模型优先”和“数据库优先”的方法,来设计各种模型,并生成C#或Visual Basic .NET的相关代码。它支持创建各种映射关系。例如:表的拆分,将实体映射到多个表中,各种复杂的类型,层次化继承结构,用SELECT语句创建实体,以及从SQL代码创建方法等。
除了独立的可视化ORM设计器和Visual Studio加载项之外,Entity Developer还提供了一个控制台应用程序。它可以实现:从数据库生成模型,从模型生成代码,通过命令行从模型脚本创建和更新数据库。该工具的下载地址为--https://www.devart.com/entitydeveloper/
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】