abp(net core)+easyui+efcore仓储系统目录
abp(net core)+easyui+efcore仓储系统——ABP总体介绍(一)
abp(net core)+easyui+efcore仓储系统——解决方案介绍(二)
abp(net core)+easyui+efcore仓储系统——领域层创建实体(三)
abp(net core)+easyui+efcore仓储系统——定义仓储并实现 (四)
在上一篇文章中学习了ABP的仓储(Repository)功能,Repository对数据库进行增删改查操作。在这一篇文章中我们主要了解应用服务层。
一、解释下应用服务层
应用服务用于将领域(业务)逻辑暴露给展现层。展现层通过传入DTO(数据传输对象)参数来调用应用服务,而应用服务通过领域对象来执行相应的业务逻辑并且将DTO返回给展现层。因此,展现层和领域层将被完全隔离开来。
以下几点,在创建应用服务时需要注意:
在ABP中,一个应用服务需要实现IApplicationService接口,最好的实践是针对每个应用服务都创建相应继承自IApplicationService的接口。(通过继承该接口,ABP会自动帮助依赖注入)
ABP为IApplicationService提供了默认的实现ApplicationService,该基类提供了方便的日志记录和本地化功能。实现应用服务的时候继承自ApplicationService并实现定义的接口即可。
ABP中,一个应用服务方法默认是一个工作单元(Unit of Work)。ABP针对UOW模式自动进行数据库的连接及事务管理,且会自动保存数据修改。
二、定义应用服务接口需要用到的DTO
1. 在Visual Studio 2017的“解决方案资源管理器”中,右键单击“ABP.TPLMS.Application”项目。 选择“添加” > “新建文件夹”。
2.将文件夹命名为“Modules”。
3. 右键单击“Modules”文件夹,选择“添加” > “新建文件夹”。将文件夹重命名为“Dto”。如下图。
4. 右键单击“Dto”文件夹,然后选择“添加” > “类”。 将类命名为 ModuleDto,然后选择“添加”。代码如下。
using Abp.Application.Services.Dto; using Abp.AutoMapper; using ABP.TPLMS.Entitys; using System; using System.Collections.Generic; using System.Text; namespace ABP.TPLMS.Modules.Dto { [AutoMapFrom(typeof(Module))] public class ModuleDto:EntityDto<long> { public string DisplayName { get; set; } public string Name { get; set; } public string Url { get; set; } public string HotKey { get; set; } public int ParentId { get; set; } public bool RequiresAuthentication { get; set; } public bool IsAutoExpand { get; set; } public string IconName { get; set; } public int Status { get; set; } public string ParentName { get; set; } public string RequiredPermissionName { get; set; } public int SortNo { get; set; } } }