前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >非典那年记忆

非典那年记忆

作者头像
崔文远TroyCui
发布2020-02-12 13:09:06
9330
发布2020-02-12 13:09:06
举报
文章被收录于专栏:远在上海远在上海

ABP core 的框架在过年期间,从1.0突然升级到2.0了,。 整个ABPCore 虽然版本变化 大,但使用流程基本不变吧, 我看官网上文档基本完毕了,官网文档有一个外国人视频,当时版本尚是0.18,总共有2小时吧。记录个学习笔记吧!

课程内容主要步骤记录: 

【】所包含的是对应项目名

1、生成项目

abp new   ,并编译全部

2、修改连接字符串:

【DbMigrator】修改连接字符串,并执行这个项目,就实现数据库的创建和写入种子数据.   这时可以启用【web】登录网站并修改密码

3、添加实体类,业务实体

【Domain】中添加Book, 继承自审计聚合根  auditedAggregateRoot类。  这个类本身实现了一系统接口

4、添加项目的全局的共有类

【domain.shared】中添加BookType的枚举类型。  它是整个解决方案共用的类型

5、在DBContext中注册实体类

【EFCore】中,DbContext中添加DbSet<Book>  books;   

                         DbContextModelCreatingExtensions 中添加表名,表属性,外键关系的配置

6、添加迁移文件

【EFC.DbMigrations】 执行add mirgrate "xxx"

7、添加   BookStoreDataSeedContributor 

【Domain】中,添加一个类BookStoreDataSeedContributor ,继承自 IDataSeedContributor, ITransientDependency接口,实现SeedAsync方案

                           类中注入 Repository<Book,Guid>  和 GuidGenerator类型的两个对象,  借助它们来添加种子数据——三本书的信息Book

8、执行【DbMigrator】,更新数据库

不明白为什么第7步中添加的类会自动被识别,ABP应该有什么自动发现的机理。

9、添加DTO类

【Application.Contracts】添加BookDTO类,继承自AuditedEntityDTO<Guid> 。 所有属性和Book相同。

 Contracts是协议合同的意思,表示这个对象是应用层的一个实体,用户交互数据的,所以叫Contracts

10,添加实体和DTO的映射关系 

【Application】ApplicationAutoMapperProfile.cs文件中,加一句话:  CreateMap(Book,BookDto)

11、创建CreateUpdateBookDTO类

【Application.Contracts】添加CreateUpdateBookDTO类。类不继承其它任何类,  成员变量上添加 DataAnnotation ,数据注解!

这个DTO类竟然没有ID这个字段,更新时到底会是什么个机制呢???

12、再添加实体和CreateUpdateBookDTO的映射关系

【Application】 再加一句:  CreateMap(CreateUpdateBookDTO,Book)

13、添加第一个IService 接口

【Application.Contracts】 添加 IBookAppService。继承自: ICrudAppService  接口,比较复杂。它包含CRUD的几个方法

注意,视频中,继承的是IAsyncCrudAppService, 但官网示例代码是ICrudAppService。

14、编写IService的实现类

【Application】添加BookAppService的类文件:   构造函数中,注入了Book的仓储对象。

注意,视频中,继承的是AsyncCrudAppService, 但官网示例代码是CrudAppService。

15、浏览自动生成的Swagger 接口,动态JavaScript代理

运行【WEB】项目,浏览   /swagger/index.html  ,可以看到通过服务,已经自动生成了相应接口

同时项目生成相应的前端js 代理,可以直接访问API接口

acme.bookStore.book.getList({}).done(function (result) { console.log(result); });

16、 添加Razor 的页面

【web】 添加页面 Pages/Books/index.cshtml  ,页面继承了  @inherits Acme.BookStore.Web.Pages.BookStorePage

                添加菜单 Menus/ BookStoreMenuContributor.cs  中添加

17、添加国际化的内容

【Domain.shared】中添加对应的键的显示内容!

18、编写一个基于 abp UI的表格

【web】 index.cshtml中,添加一组 <abp-*>的标签来写页面,tag-helpers简化页面

js文件中,用DataTable.js插件来生成表格。  第三方的表格插件已经内置,且abp写了许多辅助的东西来适配第三方的插件

  • abp.libs.datatables.createAjax是帮助ABP的动态JavaScript API代理跟Datatable的格式相适应的辅助方法.
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 课程内容主要步骤记录: 
    • 1、生成项目
      • 2、修改连接字符串:
        • 3、添加实体类,业务实体
          • 4、添加项目的全局的共有类
            • 5、在DBContext中注册实体类
              • 7、添加   BookStoreDataSeedContributor 
                • 8、执行【DbMigrator】,更新数据库
                  • 9、添加DTO类
                    • 10,添加实体和DTO的映射关系 
                      • 11、创建CreateUpdateBookDTO类
                        • 12、再添加实体和CreateUpdateBookDTO的映射关系
                          • 13、添加第一个IService 接口
                            • 14、编写IService的实现类
                              • 15、浏览自动生成的Swagger 接口,动态JavaScript代理
                                • 16、 添加Razor 的页面
                                  • 17、添加国际化的内容
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档