【Abp VNext】实战入门(二):应用层服务创建、简单服务、继承CrudAppService增删改查服务

应用层: AoRuiDe.GasMonitoring.Application

一、创建简单应用层服务:

1、应用层 根目录新增  AbpUserAppService.cs

    [AllowAnonymous] //默认不做权限控制
    public class AbpUserAppService: ApplicationService
    {
        public string Test(string value)
        {
            return value;
        }
    }

二、基于CrudAppService 创建默认 增、删、改、查、分页服务:

1、应用层 根目录新增 UserDto.cs:用于存放对外传递的数据内容

    public class UserDto : EntityDto<Guid>
    {
        public Guid? TenantId { get; private set; }

        public string UserName { get; private set; }

    }

2、更改 AbpUserAppService.cs:CrudAppService具体参数自己查看

    [AllowAnonymous]
    public class AbpUserAppService : CrudAppService<AppUser, UserDto, Guid, PagedResultRequestDto, UserDto, UserDto>
    {
        public AbpUserAppService(IRepository<AppUser, Guid> repository) : base(repository)
        {
        }        
    }

3、根目录修改 GasMonitoringApplicationAutoMapperProfile.cs :用于定义 CrudAppService 中查询到的AppUser实体 向 UserDto映射转换

  public  class GasMonitoringApplicationAutoMapperProfile: Profile
    {
        public GasMonitoringApplicationAutoMapperProfile()
        {
            CreateMap<AppUser, UserDto>();
            //CreateMap<UserDto, AppUser>(); //注意这种写法会因为 Dto中的数据 和 AppUser中的数据不匹配 报错  
            //CreateMap<TestDto, Test>().ForMember(x => x.CreationTime, opt => opt.Ignore()); //转换的时候 指定忽略后者中的CreationTime 因为Dto中不存在  很蛋疼的写法 字段多了没法玩儿
            CreateMap<UserDto, AppUser>(MemberList.Destination); //转换时默认检测后者目标属性 Validate
            CreateMap<UserDto, AppUser>(MemberList.Source); //正规姿势1:只检测Dto中属性 Validate
            CreateMap<UserDto, AppUser>(MemberList.None);   //正确姿势2:如果两个实体不完全相等且彼此属性互不包含,自动转换,不做任何检测
            
            //类似于实体间的双向转换  不同于以往ABP的写法
            //[AutoMapFrom(typeof(Tenant_UserMsgs))]
            //[AutoMapTo(typeof(Tenant_UserMsgs))]
            // public class ModeDto : EntityDto {}
            
        }
    }

4、在模块中注册GasMonitoringAppAutoMapperProfile:不添加映射转换配置 以及注册  会导致继承的增、删、改、查、分页接口调用报500错误

    public class GasMonitoringApplicationModule : AbpModule
    {
        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            Configure<AbpAutoMapperOptions>(options =>
            {
                options.AddMaps<GasMonitoringApplicationModule>();
                options.AddProfile<GasMonitoringApplicationAutoMapperProfile>(validate: true);
            });
        }
    }

三、总结:

本文只做核心功能说明和展示,所有文件都是放在根目录的;

最近接了个私活,以前熟悉的是ABP框架,借这个机会尝试一下 AbpVnext ,每次换框架都会踩坑无数,摸着石头过河让人难受!

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值