abap free_ASP 第三方控件

abap free_ASP 第三方控件public class SimpleAppService : AsyncCrudAppService, ISimpleAppService。

前言

这两天看了一下ABP,做个简单的学习记录。记录主要有以下内容:

  1. 从官网创建并下载项目(.net core 3.x + vue)
  2. 项目在本地成功运行
  3. 新增实体并映射到数据库
  4. 完成对新增实体的基本增删改查

ABP官网:https://aspnetboilerplate.com/Github:https://github.com/aspnetboilerplate

创建项目

进入官网

abap free_ASP 第三方控件

Get started,选择前后端技术栈,我这里就选.net core 3.x和vue。

abap free_ASP 第三方控件

填写自己的项目名称,邮箱,然后点create my project就可以下载项目了。

abap free_ASP 第三方控件

解压文件

abap free_ASP 第三方控件

运行项目

后端项目

首先运行后端项目,打开/aspnet-core/MyProject.sln

abap free_ASP 第三方控件

改一下MyProject.Web.Host项目下appsettings.json的数据库连接字符串,如果本地安装了mssql,用windows身份认证,不改也行

abap free_ASP 第三方控件

数据库默认是使用mssql的,当然也可以改其他数据库。

将MyProject.Web.Host项目设置为启动项,打开程序包管理器控制台,默认项目选择DbContext所在的项目,也就是MyProject.EntityFrameworkCore。执行update-database

abap free_ASP 第三方控件

数据库已成功创建:

abap free_ASP 第三方控件

Ctrl+F5,不出意外,浏览器就会看到这个界面:

abap free_ASP 第三方控件

前端项目

后端项目成功运行了,下面运行一下前端项目,先要确保本机有nodejs环境并安装了vue cli,这个就不介绍了。

/vue目录下打开cmd执行:npm install

abap free_ASP 第三方控件

install完成后执行:npm run serve

abap free_ASP 第三方控件

打开浏览器访问http://localhost:8080/,不出意外的话,会看到这个界面:

abap free_ASP 第三方控件

使用默认用户 admin/123qwe 登录系统:

abap free_ASP 第三方控件

至此,前后端项目都已成功运行。那么基于abp的二次开发该从何下手呢,最简单的,比如要增加一个数据表,并且完成最基本CRUD该怎么做?

新增实体

实体类需要放在MyProject.Core项目下,我新建一个MyTest文件夹,并新增一个Simple类,随意给2个属性。

abap free_ASP 第三方控件

我这里继承了abp的Entity类,Entity类有主键ID属性,这个泛型int是指主键的类型,不写默认就是int。abp还有一个比较复杂的FullAuditedEntity类型,继承FullAuditedEntity的话就有创建时间,修改时间,创建人,修改人,软删除等字段。这个看实际情况。

public class Simple : Entity<int>
{
    public string Name { get; set; }

    public string Details { get; set; }
}

修改MyProject.EntityFrameworkCore项目的/EntityFrameworkCore/MyProjectDbContext:

public class MyProjectDbContext : AbpZeroDbContext<Tenant, Role, User, MyProjectDbContext>
{
    /* Define a DbSet for each entity of the application */

    public DbSet<Simple> Simples { get; set; }

    public MyProjectDbContext(DbContextOptions<MyProjectDbContext> options)
        : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<Simple>(p =>
        {
            p.ToTable("Simples", "test");
            p.Property(x => x.Name).IsRequired(true).HasMaxLength(20);
            p.Property(x => x.Details).HasMaxLength(100);
        });
    }
}

然后就可以迁移数据库了,程序包管理器控制台执行:add-migration mytest1,update-database

abap free_ASP 第三方控件

刷新数据库,Simples表已生成:

abap free_ASP 第三方控件

实体的增删改查

进入MyProject.Application项目,新建一个MyTest文件夹

abap free_ASP 第三方控件

Dto

CreateSimpleDto,新增Simple数据的传输对象,比如ID,创建时间,创建人等字段,就可以省略

public class CreateSimpleDto
{
    public string Name { get; set; }

    public string Details { get; set; }
}

PagedSimpleResultRequestDto,分页查询对象

public class PagedSimpleResultRequestDto : PagedResultRequestDto
{
    /// <summary>
    /// 查询关键字
    /// </summary>
    public string Keyword { get; set; }
}

SimpleDto,这里跟CreateSimpleDto的区别就是继承了EntityDto,多了个ID属性

public class SimpleDto : EntityDto<int>
{
    public string Name { get; set; }

    public string Details { get; set; }
}

SimpleProfile,用来定义AutoMapper的映射关系清单

public class SimpleProfile : Profile
{
    public SimpleProfile()
    {
        CreateMap<Simple, SimpleDto>();
        CreateMap<SimpleDto, Simple>();
        CreateMap<CreateSimpleDto, Simple>();
    }
}

Service

注意,类名参考abp的规范去命名。

ISimpleAppService,Simple服务接口。我这里继承IAsyncCrudAppService,这个接口中包含了增删改查的基本定义,非常方便。如果不需要的话,也可以继承IApplicationService自己定义

public interface ISimpleAppService : IAsyncCrudAppService<SimpleDto, int, PagedSimpleResultRequestDto, CreateSimpleDto, SimpleDto>
{

}

SimpleAppService,Simple服务,继承包含了增删改查的AsyncCrudAppService类,如果有需要的话可以override这些增删改查方法。也可以继承MyProjectAppServiceBase,自己定义。

public class SimpleAppService : AsyncCrudAppService<Simple, SimpleDto, int, PagedSimpleResultRequestDto, CreateSimpleDto, SimpleDto>, ISimpleAppService
{
    public SimpleAppService(IRepository<Simple, int> repository) : base(repository)
    {

    }

    /// <summary>
    /// 条件过滤
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    protected override IQueryable<Simple> CreateFilteredQuery(PagedSimpleResultRequestDto input)
    {
        return Repository.GetAll()
            .WhereIf(!input.Keyword.IsNullOrWhiteSpace(), a => a.Name.Contains(input.Keyword));
    }
}

接口测试

重新运行项目,不出意外的话,Swagger中就会多出Simple相关的接口。

abap free_ASP 第三方控件

  • Create
abap free_ASP 第三方控件

abap free_ASP 第三方控件

  • Get
abap free_ASP 第三方控件

abap free_ASP 第三方控件

  • GetAll
abap free_ASP 第三方控件

abap free_ASP 第三方控件

  • Update
abap free_ASP 第三方控件

abap free_ASP 第三方控件

  • Delete
abap free_ASP 第三方控件

abap free_ASP 第三方控件

总结

ABP是一个优秀的框架,基于ABP的二次开发肯定会非常高效,但前提是需要熟练掌握ABP,弄清楚他的设计理念以及他的一些实现原理。

以后有时间的话再深入学习一下。文中如果有不妥之处欢迎指正。

原文地址:https://www.cnblogs.com/xhznl/p/13197706.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/11684.html

(0)

相关推荐

  • 用Python计算平方根的高效方法

    用Python计算平方根的高效方法传统的平方根计算算法是通过不断逼近的方法,即在一个区间内不断取中点,并根据给定的精度判断是否满足平方根条件,不断缩小区间,直到满足精度为止。但这种方法反复计算,随着数字越大,计算次数越多,速度越慢。同时,这种计算方法需要很高的计算精度,对于特别精确的计算场景,对计算性能有很大的损失。

    2023-12-17
    67
  • Python安装和使用Tkinter图形界面库

    Python安装和使用Tkinter图形界面库a href=”https://beian.miit.gov.cn/”苏ICP备2023018380号-1/a Copyright www.python100.com .Some Rights Reserved.

    2024-02-04
    48
  • MongoDB的安装方式_docker安装mongodb

    MongoDB的安装方式_docker安装mongodb 1、下载地址 https://www.mongodb.org/dl/win32/2、配置环境变量3、在c盘根目录创建一个文件夹data,在data中创建一个文件夹db4、在cmd命令行,输入…

    2023-03-21
    102
  • 子查询优化之 Semi-join 优化 | StoneDB 研发分享 #2[亲测有效]

    子查询优化之 Semi-join 优化 | StoneDB 研发分享 #2[亲测有效]缘起 StoneDB 在列式存储引擎 Tianmu 的加持下,在大多数场景下相对 MySQL 都会有大幅性能提升。当然,这是需要工程师不断优化代码才能做到的,而且,性能好也需要通过基准测试才有说服力,

    2023-06-18
    96
  • 流媒体与实时计算,Netflix公司Druid应用实践[通俗易懂]

    流媒体与实时计算,Netflix公司Druid应用实践[通俗易懂]Netflix(Nasdaq NFLX),也就是网飞公司,成立于1997年,是一家在线影片[租赁]提供商,主要提供Netflix超大数量的[DVD]并免费递送,总部位于美国加利福尼亚州洛斯盖图。199

    2023-02-26
    101
  • 简述spark任务的调度原理_Apache Spark

    简述spark任务的调度原理_Apache Spark本文主要根据平台用户平常提交的spark任务思考,调研引入Dr. Elephant, 通过阅读Dr 相关源码, 明白Dr 执行整体流程并对代码进行改造,适配我们的需求.最终转变为平台产品来对用户的Sp

    2023-05-03
    105
  • python中异常_所有异常的父类

    python中异常_所有异常的父类如果问所有的异常的父类,应该是Exception

    2023-08-25
    81
  • Python工程师必知:pip是什么

    Python工程师必知:pip是什么Python是当今最为流行的编程语言之一,它广泛应用于各个领域,包括Web开发、数据分析、人工智能等。而在Python生态系统中,有一个非常重要的工具——pip,它是Python的软件包管理器,为我们提供了方便快捷的软件包安装和管理。在这篇文章中,我们将从多个方面探讨pip的作用和使用方法,帮助Python工程师更好地掌握这个工具。

    2024-04-30
    12

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注