首页 > 其他分享 >ONEAbp

ONEAbp

时间:2023-05-19 18:46:36浏览次数:45  
标签:clipboardErrorCopied Compare QueryCompare Abp ONEAbp Copy public

快速开始

首先,如果你没有安装ONEABP CLI,请先安装它:

dotnet tool install -g ONE.Abp.Cli

在一个空文件夹使用 abp new 命令创建新解决方案:

base模板

oneabp new Acme.BookStore -t base -d ef -dbms postgresql

micro模板

oneabp new Acme.BookStore -t micro -d ef -dbms postgresql

ONEABP.CLI在ABP.CLI基础上增加了两个模板

1.base模板: 解决方案包含网关,认证服务和基础服务项目

2.micro模板:解决方案包含微服务项目

租户管理

待完善

文件管理

待完善

数据字典管理

第一种 配置方式

 Configure<AbpEnumDicOption>(option =>
            {
                option.Add<Sex>("性别");
            });

第二种 注册方式

  public class ONEEnumDataItemRegisterion : EnumDataItemRegisterionBase
    {
        public override void Register(AbpEnumDicOption option)
        {
            option.Add<Sex>("性别");
        }
    }

注意:base模板和micro模板已经引用该模块

数据权限管理

在 Domain 层引用 ONE.Abp.DataPermission NuGet 包并且添加[DependsOn(typeof(AbpDataPermissionModule))]模块

配置规则

 Configure<AbpRuleOptions>(option =>
            {
                option.DataTargetOption.Add<Customer>(needUpdateShadowProperty:true);
            });

这里是你可以配置的选项列表:

  • DataTargetOption:添加数据源对象

    参数 needUpdateShadowProperty(默认值 false):是否需要更新影子属性,true 为更新

  • RuleExtraFieldManager:规则扩展管理,下面介绍

  • IsReleasedIfNoRulesAreMatched(默认值 true):在没有匹配任何规则下是否放行,true 为放行

使用规则 ToPagedResultForRuleAsync 方法

在 Application 层引用 ONE.Abp.DataPermission.Extension NuGet 包并且添加[DependsOn(typeof(AbpDataPermissionExtensionModule))]模块

   await (await CustomerRepository.WithDetailsAsync()).ToPagedResultForRuleAsync<Customer, CustomerDto>(input);

规则扩展

扩展用户规则属性 如扩展组织编码属性


            Configure<AbpRuleOptions>(option =>
            {
                option.RuleExtraFieldManager.AddUserExtraProperty("OrganizationCode");
            });

扩展数据规则预定义值

首先定义 IOrganizationCode 接口,需要继承自 IShadowProperty 接口


            Configure<AbpRuleOptions>(option =>
            {
               option.RuleExtraFieldManager.AddDataExtraProperty<IOrganizationCode>("OrganizationCode");
            });

注意:base模板已经引用该模块,micro模板按需引用

应用管理

待完善

管理设置

待完善

分页查询

查询应该是开发中比较高频的使用,ONE.Abp提供了简单快捷的查询实现方式

1.接口层引用ONE.Abp.Pagination.Contracts

 [DependsOn( typeof(AbpPaginationContractsModule) )]

2.应用层引用ONE.Abp.Pagination

 [DependsOn( typeof(AbpPaginationModule) )]

注意:使用模板创建项目自带了分页引用

定义请求参数类

   public class SampleQueryInput:PagedQuery
    {
        [Query(Compare =ONE.Abp.Shared.QueryCompare.Like)] 
        public string? Name { get; set; }

        [Query("CreationTime", Compare = ONE.Abp.Shared.QueryCompare.GreaterThanOrEqual)]
        [Query(Compare = ONE.Abp.Shared.QueryCompare.Like)]
        public DateTime? Start { get; set; }

        [Query("CreationTime", Compare = ONE.Abp.Shared.QueryCompare.LessThan)]
        public DateTime? End { get; set; }


        [Query(Compare = ONE.Abp.Shared.QueryCompare.Equal)]
        public int? Value { get; set; } 
    }

要点:

  • 参数类要继承PagedQuery

  • 定义可空类型表示值为空在查询时忽略该参数条件

  • QueryAttribute特性

    PropertyPath属性表示映射的字段名,如果参数名跟字段名一致可以不填

    Compare属性表示比较方式,该枚举值覆盖了大多数通用的比较方式。

  • 参数条件之间默认是与运算,如果需要采用或运算,比如 Name跟Value是或运算,那么则使用OrGroup属性,如下示例:

      public class SampleQueryInput:PagedQuery
      {
          [Query(Compare =ONE.Abp.Shared.QueryCompare.Like,OrGroup ="cc")] 
          public string? Name { get; set; }
    
          [Query("CreationTime", Compare = ONE.Abp.Shared.QueryCompare.GreaterThanOrEqual)]
          [Query(Compare = ONE.Abp.Shared.QueryCompare.Like)]
          public DateTime? Start { get; set; }
    
          [Query("CreationTime", Compare = ONE.Abp.Shared.QueryCompare.LessThan)]
          public DateTime? End { get; set; }
        [Query(Compare = ONE.Abp.Shared.QueryCompare.Equal, OrGroup = "cc")]
        public int? Vaule { get; set; } 
    }

查询使用

public async Task<PagedResult<SampleDto>> GetQueryAsync(SampleQueryInput input)
{
    return await (await _repository.WithDetailsAsync()).ToPagedResultAsync<Sample,SampleDto>(input);
}

ToPagedResultAsync方法是IQueryable<>的静态扩展方法。

注意:需要返回非实体类时,记得对象映射 CreateMap< Sample, SampleDto >();

 

 

转https://sososu.github.io/ONE.Abp.Doc/#/index

 

标签:clipboardErrorCopied,Compare,QueryCompare,Abp,ONEAbp,Copy,public
From: https://www.cnblogs.com/wl-blog/p/17416016.html

相关文章