ONEAbp

快速开始

首先,如果你没有安装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

 

posted @   dreamw  阅读(122)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2022-05-19 LINQ to SQL使用教程
2022-05-19 Dapper的完整扩展(转)
2022-05-19 C# SqlBuilder類代碼示例
2022-05-19 后端 在 Dapper 中使用 SqlBuilder 達成動態條件
2022-05-19 dapper的nitOfWork之介绍
2022-05-19 .NetCore中使用Dapper
点击右上角即可分享
微信分享提示