博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Entity Developer构建ASP.NET Core Web API应用程序
阅读量:3527 次
发布时间:2019-05-20

本文共 5586 字,大约阅读时间需要 18 分钟。

目录


介绍

DevartEntity Developer是一个非常强大的建模和代码生成工具,更精确地说是一个ORM工具。Entity Developer使您可以一目了然地可视化设计数据访问层。由于Devart生成的数据访问层包含自动生成的代码,因此出错的可能性很小。

Entity Developer的官方网站指出:“Entity Developer可以在一个统一的界面中帮助您设计各种.NET ORM的模型。您可以在一个工具中获得对所有ORM的支持,也可以购买单独的版本,并使用其中的一种支持的ORM

参考

Entity Developer支持ADO.NET实体框架,实体框架核心(EF Core)HibernateLinqConnectTelerik数据访问和LINQ to SQL。它使用数据库优先方法,并说明如何与ORM设计器和代码生成工具一起使用。本文讨论了如何与Entity Developer一起在ASP.NET Core 3.1中构建RESTful服务。

先决条件

为了能够使用本文中演示的代码示例,您应该在系统中安装以下组件:

  • Visual Studio 2019社区版
  • SQL Server 2019开发人员版
  • Entity Developer

您可以从此下载.NET Core 3.1 

您可以从此下载Visual Studio 2019 

您可以从此下载SQL Server 2019 Developer Edition 

您还应该下载并还原AdventureWorks数据库,这是系统中在线事务处理(OLTP)的Microsoft产品示例。您可以从此下载系统中的AdventureWorks数据库副本。

Visual Studio 2019中创建新的ASP.NET Core Web API项目

假设您的计算机上已经安装了必要的软件,以便可以与Entity Developer一起使用,请按照下面概述的步骤创建一个新的ASP.NET Core Web API项目。

  1. 首先,打开Visual Studio 2019 IDE
  2. 接下来,在IDE加载后,单击创建新项目
  3. 点击创建一个新项目 ”
  4. 接下来,选择ASP.NET Core Web应用程序
  5. 点击下一步按钮
  6. 指定项目名称和位置——应将其存储在系统中的位置
  7. (可选)单击将解决方案和项目放在同一目录中复选框。
  8. 接下来,点击创建按钮
  9. 在接下来显示的创建新的ASP.NET Core Web应用程序对话框窗口中,选择API作为项目模板。
  10. 选择ASP.NET Core 3.1或更高版本。
  11. 您应该通过禁用相应的复选框来禁用HTTPS配置启用Docker支持选项。
  12. 由于在此示例中将不使用身份验证,因此将身份验证指定为No Authentication
  13. 最后,单击创建按钮以完成该过程。

使用Entity Developer创建实体数据模型

在本节中,我们将探索如何使用Entity Developer创建实体数据模型。要在Visual Studio 2019中使用Entity Developer创建实体数据模型,请遵循以下概述的步骤:

1、在解决方案资源管理器窗口中右键单击项目

2、选择添加 -> 新项目

1

这将启动Entity Developer:创建模型向导窗口,如下所示:

2

这是您应该指定应如何创建模型的方式。有两个选项:数据库优先(默认情况下处于选中状态)和模型优先。在此示例中,我们将利用数据库优先方法。

3、单击下一步按钮继续。

4、在下一个截图中,指定连接属性,然后单击下一步按钮继续。

3

在下一个截图中,您应该指定模型应包含的内容。缺省情况下,从数据库生成选项处于选中状态,如下图所示:

4

5、由于我们需要从数据库中创建模型,因此单击下一步按钮继续。

在下一个截图中,Entity Developer运行时将检索数据库元数据,这是选择数据库对象的方式。

5

6、取消选择所有选项,然后仅指定要成为模型一部分的数据库对象。为了简单起见,我们仅选择PersonEmailAddress表。

6

7、在设置命名规则截图中,您可以为实体指定命名规则。

7

8、由于我们不会在此处进行任何更改,因此请单击下一步按钮继续。

接下来显示的截图是模型属性,如下图所示:

8

9、将上下文命名空间指定为AdventureWorksModel,然后单击下一步按钮继续。在下一个截图中,您可以指定模型图应包含的内容。

9

请注意,将显示我们之前选择的两个数据库对象,并且默认情况下会选择所有实体单选按钮。

10、由于我们此处将不会进行任何更改,因此请单击下一步按钮继续。在下一个截图中,您可以根据需要选择代码生成模板。

10

11、由于这里我们将不做任何修改,因此请单击下一步按钮继续。

12、在下一个截图中,单击下一步按钮继续。

11

13、单击完成以完成该过程。

使用Entity DeveloperADO.NET实体数据模型已创建。实体数据模型如下所示:

12

创建API控制器

到目前为止,一切都很好。现在已经创建了Web API项目和实体数据模型,下一步是创建将用于与实体数据模型进行交互的API控制器。为此,请按照以下概述的步骤操作:

1、在解决方案资源管理器窗口中选择项目

13

2、右键单击并选择添加 -> 控制器

3、在添加新脚手架项目窗口中,选择具有读/写操作的API控制器作为模板

14

4、点击添加在下一个截图中,指定控制器的名称。让我们将控制器命名为DefaultController

5、单击添加以创建控制器并将其添加到您的项目中

在下面的部分中,我们将使用此控制器来编写操作方法。

通过实体数据模型读取数据

在本节中,我们将研究如何使用在上一节中创建的实体数据模型从数据库AdventureWorks读取数据。

创建一个使用以下代码命名的IAdvantureWorksRepository接口:

public interface IAdventureWorksRepository{    PersonDTO GetPerson(int personId);}

创建一个名为PersonDTO的新类,并在其中添加以下代码:

public class PersonDTO    {        public string FirstName { get; set; }        public string LastName { get; set; }        public string EmailAddress { get; set; }    }

创建一个内部包含以下内容的AdventureWorksRepository类:

public class AdventureWorksRepository: IAdventureWorksRepository    {        public PersonDTO GetPersonById(int personId)        {            using(AdventureWorksModel dbContext = new                  AdventureWorksModel())            {                var query = from p in dbContext.People join e in                dbContext.EmailAddresses                      on p.BusinessEntityID equals e.BusinessEntityID                      where p.BusinessEntityID == personId                            select new PersonDTO                            {                                FirstName= p.FirstName,                                 LastName= p.LastName,                                EmailAddress = e.EmailAddress1                            };                      return query.SingleOrDefault();            }        }    }

AdventureWorksRepository类扩展IAdventureWorksRepository接口并实现GetPersonById方法。该GetPersonById方法返回PersonDTO的实例。

以下代码段显示了如何在Startup类的ConfigureServices方法中添加我们作为范围服务创建的服务AdventureWorksRepository

public void ConfigureServices(IServiceCollection services){    services.AddScoped(typeof(IAdventureWorksRepository),    typeof(AdventureWorksRepository));    services.AddControllers();}

现在,我们可以利用控制器中的依赖项注入,如下面的代码片段所示:

public class DefaultController : ControllerBase{   private readonly IAdventureWorksRepository _adventureWorksRepository;   public DefaultController(IAdventureWorksRepository adventureWorksRepository)   {     _adventureWorksRepository = adventureWorksRepository;   }  //Action methods}

以下代码段显示了如何编写一个操作方法,该方法接受业务实体ID作为参数,然后调用AdventureWorksRepositoryGetPersonById方法。

[HttpGet("{id}", Name = "Get")]public string Get(int id){  var person = _adventureWorksRepository.GetPerson(id);  return JsonConvert.SerializeObject(person);}

下面的代码清单是该DefaultController类的完整代码,供您参考。

[Route("api/[controller]")][ApiController]public class DefaultController : ControllerBase{    private readonly IAdventureWorksRepository                      _adventureWorksRepository;    public DefaultController(IAdventureWorksRepository                             adventureWorksRepository)    {        _adventureWorksRepository = adventureWorksRepository;    }    [HttpGet]    public string Get()    {        return "Demonstrating Entity Developer";    }    [HttpGet("{id}", Name = "Get")]    public string Get(int id)    {        var person = _adventureWorksRepository.GetPersonById(id);        return JsonConvert.SerializeObject(person);    }}

当您执行应用程序并点击Get(int id)端点时,输出如下:

15

摘要

来自DevartEntity Developer帮助您提高开发人员的工作效率——它支持使用ADO.NET Entity FrameworkEntity Framework CoreHibernateLinqConnectTelerik Data AccessLINQ to SQLEntity Developer也内置于Devart ADO.NET数据提供程序中——这是链接:

从以下位置下载试用版后,您可以开始使用Entity Developer

转载地址:http://wdwhj.baihongyu.com/

你可能感兴趣的文章
code刷题
查看>>
左神进阶2窗口
查看>>
dubbo入门
查看>>
http 错误类型
查看>>
一篇文章解决HTTP 请求头!
查看>>
学习日记02
查看>>
学习日记03
查看>>
学习日记04
查看>>
学习日记08(元组、字典、集合)
查看>>
js自定义数据顺序进行升序或者降序排序
查看>>
【零】简单数仓框架优化、配置及基准测试
查看>>
【零】Linux中MySQL安装
查看>>
Sqoop的安装及测试
查看>>
Kylin的简单使用
查看>>
Presto的概念和安装使用
查看>>
Druid的Web页面使用
查看>>
Scala-HelloWorld
查看>>
Scala-IDEA中环境部署
查看>>
Scala-HelloWorld解析
查看>>
Scala-变量和数据类型
查看>>