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

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

[[342545]]顶级实体框架的核心工具与扩展" 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自动保留了历史记录。

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

  1. PM> Install-Package Microsoft.EntityFrameworkCore.AutoHistory 

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

EFCore.BulkExtensions

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

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

  1. 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

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

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

  1. 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插件的主要特征包括:

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

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

  1. PM> Install-Package EfCore.InMemoryHelpers 

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

EntityFrameworkCore.Cacheable

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

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

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

 

  1. PM> Install-Package EntityFrameworkCore.Cacheable 

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

总结

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

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

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

 

责任编辑:庞桂玉 来源: 51CTO
相关推荐

2018-12-26 15:14:56

2021-09-06 10:05:42

Chrome浏览器

2015-05-22 16:43:44

2009-03-16 09:16:13

行为扩展WCF.NET

2020-07-17 07:00:00

GitHubgit开源

2017-01-19 09:57:18

APP开发JavaScript

2018-04-17 12:58:52

大数据工具大数据数据可视化

2016-06-13 10:48:26

开发运维工具

2009-07-20 15:51:40

FubuMVC核心框架ASP.NET MVC

2022-03-13 23:26:29

JavaScript编程语言开发

2024-09-13 09:03:28

2020-04-21 11:44:39

威胁建模框架安全工具

2016-02-23 15:18:26

开源问题追踪工具

2019-05-22 10:57:15

工具微服务架构

2024-03-11 10:19:30

Plasmo浏览器Web

2016-12-14 14:08:23

移动APP开发JavaScript

2024-02-26 00:00:00

前端工具Space.js

2019-11-14 09:00:00

前端测试工具框架

2015-12-28 09:39:48

开源办公工具工具

2022-04-03 15:44:55

Vue.js框架设计设计与实现
点赞
收藏

51CTO技术栈公众号