您当前的位置: 首页 >  .net

寒冰屋

暂无认证

  • 0浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

使用Entity Developer构建ASP.NET Core Web API应用程序

寒冰屋 发布时间:2020-06-29 20:31:04 ,浏览量:0

目录

介绍

先决条件

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

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

创建API控制器

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

摘要

介绍

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

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

参考:https://www.devart.com/entitydeveloper/

Entity Developer支持ADO.NET实体框架,实体框架核心(EF Core),Hibernate,LinqConnect,Telerik数据访问和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、取消选择所有选项,然后仅指定要成为模型一部分的数据库对象。为了简单起见,我们仅选择Person和EmailAddress表。

图6

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

图7

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

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

图8

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

图9

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

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

图10

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

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

图11

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

使用Entity Developer的ADO.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作为参数,然后调用AdventureWorksRepository的GetPersonById方法。

[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

摘要

来自Devart的Entity Developer帮助您提高开发人员的工作效率——它支持使用ADO.NET Entity Framework,Entity Framework Core,Hibernate,LinqConnect,Telerik Data Access和LINQ to SQL。Entity Developer也内置于Devart ADO.NET数据提供程序中——这是链接:https://www.devart.com/dotconnect/。

从以下位置下载试用版后,您可以开始使用Entity Developer:https://www.devart.com/entitydeveloper/download.html。

关注
打赏
1665926880
查看更多评论
立即登录/注册

微信扫码登录

0.0944s