前言

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

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

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

“建立项目”

(进入)官网

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

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

解压文件

【运行项目】

后端项目

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

改一下MyProject.Web.Host项目下appsettings.json〖的数据库毗邻字符串〗,若是内陆安装了mssql,用windows『身份』认证,不改也行

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

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

数据库已乐成建立:

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

前端项目

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

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

install完成后执行:npm run serve

打开浏览器接见http://localhost:8080/,《不出意》外的话,<会看到>这个界面:

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

至此,前后端项目都已乐成运行。
那么基于abp『的二次开发该从何下』手〖呢〗,最简朴的,好比要增添一个数据表,而且完成最基本CRUD该怎么做?

新增实体

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

「我」这里<继续>了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 mytest1update-database

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

实体的增删改查

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

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相关的接口。

  • Create


  • Get


  • GetAll


  • Update


  • Delete


总结

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

(以后有时间的话再)深入学习一下。文中若是有不妥之处迎接指正。

,

Allbet

www.aLLbetgame.us欢迎进入Allbet平台(Allbet Gaming):www.aLLbetgame.us,欧博平台开放欧博(Allbet)开户、欧博(Allbet){代}理开户、欧博(Allbet)电脑客户端、欧博(Allbet)APP下载等业务。

Allbet Gaming声明:该文看法仅代表作者自己,与阳光在线无关。转载请注明:us apple developer accounts for sale:ABP(ASP.NET Boilerplate Project)“快速入”门
发布评论

分享到:

舟山娱乐:面对病情不放弃,终于迎来及时雨——白血病患者的康复历程
1 条回复
  1. Allbet官网
    Allbet官网
    (2020-09-20 00:06:35) 1#

    联博开奖网www.326681.com采用以太坊区块链高度哈希值作为统计数据,联博以太坊统计数据开源、公平、无任何作弊可能性。联博统计免费提供API接口,支持多语言接入。不差这点浏量

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。