ASP.NET ZERO 学习 —— (11) 应用开发Demo之创建应用服务
来源:互联网 发布:oppo声卡软件下载 编辑:程序博客网 时间:2024/05/06 17:03
创建Person的应用服务
应用服务是用来被客户端(表现层)调用执行逻辑操作。
应用服务是放在.Application项目中。我们创建第一应用服务用来从服务端获取Person信息。
首先在Application项目中创建一个叫Person的文件夹,再在Person文件夹下创建一个叫Dto的文件夹。
创建一个接口来定义Person应用服务:
public interface IPersonAppService: IApplicationService { ListResultDto<PersonListDto> GetPeople(GetPeopleInput input); }
应用服务是用来获取或返回DTO对象,ListResultDto是框架创建用来返回DTO对象列表的帮助类。GetPeopleInput是GetPeople方法的请求参数。所以,GetPeopleInput和PersonListDto 定义如下:
public class GetPeopleInput { public string Filter { get; set; } }
[AutoMapFrom(typeof(Entities.Person))] public class PersonListDto : FullAuditedEntityDto { public string Name { get; set; } public string Surname { get; set; } public string EmailAddress { get; set; } }
AutoMapFrom属性是使用AutoMapper创建Person和PersonListDto的映射。FullAuditedEntityDto包含了审计属性。参见应用服务和DTO文档了解更多。
当定义完接口后,我们如下面所示来进行实现:
public class PersonAppService : AbpZeroTemplateAppServiceBase, IPersonAppService { private readonly IRepository<Entities.Person> _personRepository; public PersonAppService(IRepository<Entities.Person> personRepository) { this._personRepository = personRepository; } public ListResultDto<PersonListDto> GetPeople(GetPeopleInput input) { var persons = this._personRepository .GetAll() .WhereIf( !input.Filter.IsNullOrEmpty(), p => p.Name.Contains(input.Filter) || p.Surname.Contains(input.Filter) || p.EmailAddress.Contains(input.Filter) ) .OrderBy(p => p.Name) .ThenBy(p => p.Surname) .ToList(); return new ListResultDto<PersonListDto>(persons.MapTo<List<PersonListDto>>()); } }
我们注入Person Repository并使用它从数据库过滤并获取Person的信息。
WhereIf是一个扩展方法(在Abp.Linq.Extensions命名空间中定义)。只用当Filter不为Null或Empty,它才执行Where条件语句。
IsNullOrEmpty也是一个扩展方法(在Abp.Extensions命名空间中定义)。ABP拥有许多类似的快捷扩展方法。
MapTo方法通过使用AutoMapper自动将 Person 对象列表转换为 PersonListDto 对象列表
连接与事务管理
我们不用手动打开数据库连接或开启/提交事务。在ABP框架的工作单元(Unit Of Work)系统中已进行了自动处理。见UOW了解更多。
错误捕获
我们不用手动捕获错误(使用Try-Catch),因为ABP框架会自动在Web层捕获所有错误并返回适当的错误消息至客户端。然后在客户端捕获错误并向用户显示所需的错误信息。见错误捕获了解更多。
- ASP.NET ZERO 学习 —— (11) 应用开发Demo之创建应用服务
- ASP.NET ZERO 学习 —— (12) 应用开发Demo之测试应用服务
- ASP.NET ZERO 学习 —— (9) 应用开发Demo之工程创建
- ASP.NET ZERO 学习 —— (10) 应用开发Demo之创建实体对象
- ASP.NET ZERO 学习 —— (13) 应用开发Demo之页面呈现Person数据
- ASP.NET ZERO 学习 —— (14) 应用开发Demo之新建People
- ASP.NET ZERO 学习 —— (15) 应用开发Demo之授权
- ASP.NET ZERO 学习 —— (16) 应用开发Demo之删除用户
- ASP.NET ZERO 学习 —— (17) 应用开发Demo之筛选
- ASP.NET ZERO 学习 —— (18) 应用开发Demo之扩展电话信息
- ASP.NET ZERO 学习 —— (3) 开发手册之介绍和MVC 应用前端
- ASP.NET ZERO 学习 —— (5) 开发手册之ANGULAR后台单页面应用
- ASP.NET ZERO 学习 —— (6) 开发手册之MVC后台多页面应用及迁移控制台程序
- ASP.NET ZERO 学习 —— (4) 开发手册之AccountController
- ASP.NET ZERO 学习 —— (7) 开发手册之基础架构
- ASP.NET ZERO 学习 —— (8) 开发手册之基于令牌的身份认证&其他
- Asp.net MVC 3实例学习之ExtShop(一)————创建应用并设置开发环境
- ASP.NET ZERO 学习 —— (1) 介绍
- arguments转数组
- Java 使用 Redis
- 数据库解决方案Data Abstract 9发布丨附下载
- Hibernate环境的搭建
- android-listview getView 多次执行
- ASP.NET ZERO 学习 —— (11) 应用开发Demo之创建应用服务
- hiho一下 第139周 买零食
- POJ 3708 高精度 + 置换 + 中国剩余定理
- TimesTen如何缓存两个用户的Schema
- 用JS获取地址栏参数的方法(超级简单)
- 对xml的深入解析
- Android基础:shape的基本用法
- Hive
- Oracle中通过日期查询数据