您的位置 首页 > 德语词汇

boilerplate的?ABP(ASP.NET Boilerplate Project)快速入门

大家好,关于boilerplate的很多朋友都还不太明白,今天小编就来为大家分享关于ABP(ASP.NET Boilerplate Project)快速入门的知识,希望对各位有所帮助!

boilerplate的?ABP(ASP.NET Boilerplate Project)快速入门

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

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

Getstarted,选择前后端技术栈,我这里就选.netcore3.x和vue。

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

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

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

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

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

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

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

/vue目录下打开cmd执行:npminstall

install完成后执行:npmrunserve

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

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

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

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

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

publicclassSimple:Entity<int>\n{\npublicstringName{get;set;}\n\npublicstringDetails{get;set;}\n}\n

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

publicclassMyProjectDbContext:AbpZeroDbContext<Tenant,Role,User,MyProjectDbContext>\n{\n/*DefineaDbSetforeachentityoftheapplication*/\n\npublicDbSet<Simple>Simples{get;set;}\n\npublicMyProjectDbContext(DbContextOptions<MyProjectDbContext>options)\n:base(options)\n{\n}\n\nprotectedoverridevoidOnModelCreating(ModelBuildermodelBuilder)\n{\nbase.OnModelCreating(modelBuilder);\n\nmodelBuilder.Entity<Simple>(p=>\n{\np.ToTable("Simples","test");\np.Property(x=>x.Name).IsRequired(true).HasMaxLength(20);\np.Property(x=>x.Details).HasMaxLength(100);\n});\n}\n}\n

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

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

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

publicclassCreateSimpleDto\n{\npublicstringName{get;set;}\n\npublicstringDetails{get;set;}\n}\n

PagedSimpleResultRequestDto,分页查询对象

publicclassPagedSimpleResultRequestDto:PagedResultRequestDto\n{\n///<summary>\n///查询关键字\n///</summary>\npublicstringKeyword{get;set;}\n}\n

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

publicclassSimpleDto:EntityDto<int>\n{\npublicstringName{get;set;}\n\npublicstringDetails{get;set;}\n}\n

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

publicclassSimpleProfile:Profile\n{\npublicSimpleProfile()\n{\nCreateMap<Simple,SimpleDto>();\nCreateMap<SimpleDto,Simple>();\nCreateMap<CreateSimpleDto,Simple>();\n}\n}\nService

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

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

publicinterfaceISimpleAppService:IAsyncCrudAppService<SimpleDto,int,PagedSimpleResultRequestDto,CreateSimpleDto,SimpleDto>\n{\n\n}\n

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

publicclassSimpleAppService:AsyncCrudAppService<Simple,SimpleDto,int,PagedSimpleResultRequestDto,CreateSimpleDto,SimpleDto>,ISimpleAppService\n{\npublicSimpleAppService(IRepository<Simple,int>repository):base(repository)\n{\n\n}\n\n///<summary>\n///条件过滤\n///</summary>\n///<paramname="input"></param>\n///<returns></returns>\nprotectedoverrideIQueryable<Simple>CreateFilteredQuery(PagedSimpleResultRequestDtoinput)\n{\nreturnRepository.GetAll()\n.WhereIf(!input.Keyword.IsNullOrWhiteSpace(),a=>a.Name.Contains(input.Keyword));\n}\n}\n接口测试

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

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

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

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

如果你还想了解更多这方面的信息,记得收藏关注本站。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023