Abp项目构建、swagger及代码生成器
前段时间在学习abp,在配置swagger时踩了不少坑,特此整理一下,方便同行参考。幸运的是又发现了神奇的代码生成器,分享下亲身经验。
觉得此博客非常有用的朋友可以在右侧赞助打赏下,非常感谢大家支持。
推荐博客
1、 Abp项目实践推荐参照大神角落的白板报的系列博客,比较新,并且是亲身体验。
http://www.cnblogs.com/wer-ltm/p/6824716.html
2、 Abp源码整体原理结构、类关系图等参看大神Hk Zhang
http://www.cnblogs.com/1zhk/p/5268054.html
一、利用abp模板构建项目
1、打开官网https://aspnetboilerplate.com/Templates


(2) 生成项目后会自动下载代码
二、初始化数据库
参照网址 http://www.cnblogs.com/changyou7/p/6072665.html
默认用户为admin/123qwe
1、 打开代码后,打开程序包管理器管制台

2、如果下载的项目代码中已经有initialCreate迁移文件了,请删除后执行。
执行后才会有数据库,此时程序就能跑起来。

3、以后想用codefirst向数据库增加表。则在core里面增加entity如Student,并在dbcontext里面加dbset<Student>。
执行命令add-migration “add-student”
Update-database后数据库会增加students表
三、配置swagger
参照http://www.cnblogs.com/wer-ltm/p/5776024.html
1、选择webapi项目,通过nuget安装Swashbuckle.core

2、 安装后修改WebApiModule里面的方法
(1)1处一定要有他,不然swagger测试接口时会报错400,找不到对应的接口.
(2)2为动态生成接口,根据application项目中的IapplicationService的实现类动态生成controller及action,暴露给外面。Swagger中可以显示出来接口列表。
(3)4为swagger生成application项目产生的动态接口文档
(4)5为swagger生成webapi自己手动写的controller/action接口文档

(5)修改webapi类库和application类库的属性,生成的xml文档位置与configureSwaggerUi统一

3、 启动web项目(一定是web项目,我也奇怪,必须通过web项目才能启动swagger看到application动态生成的接口,非常别扭,建议有空修改成webapi项目,而不是webapi类库)
http://localhost:6634/swagger/ui/index#!就能看到接口文档

4、 在用swagger测试接口时会经常遇到登录用户的权限判断,比较麻烦,可注释掉测试完业务。最后有精力统一测试权限

5、在home/index中直接跳转到swagger的页面中,方便测试api

四、代码生成器 abp code generator
参照 http://www.cnblogs.com/wer-ltm/p/5777190.html#3639210
1、先在core里面加个student实体类,并用codefirst将表迁移到数据库中去。add-migration "add-student"; update-database

2、安装abp代码生成器,vs—工具——扩展和更新——abp code generator下载

3、并右击web项目,添加,新搭建基架的项目。


然后将代码分别拷贝到对应的项目中去(大约都是cord和application项目)。

3、 参照yoyo.cms项目,将一些类拷贝过来并重构名称及命名空间。
并将ef引用加入到application中去,因为涉及到iqueryable的分页、异步等扩展方法。


4、 代码生成器非常牛气,自动生成方法及注释,以及各种参数类

五、开发套路
1、我们选择的数据库设计优先,先设计好数据库。复制出来一套新的解决方案代码,添加个dbfirst类库,采用dbfirst生成所有的entity及dbset。注意entity里面属性都加好注释。
2、利用代码生成器生成代码,并将代码拷贝到原来的代码中去。这样基本单表操作所有代码自动完成。
3、具体开发每个表相关业务时修改完善service。
Abp项目构建、swagger及代码生成器的更多相关文章
- 在Abp中集成Swagger UI功能
在Abp中集成Swagger UI功能 1.安装Swashbuckle.Core包 通过NuGet将Swashbuckle.Core包安装到WebApi项目(或Web项目)中. 2.为WebApi方法 ...
- ABP项目概述
在系统性介绍整个ABP框架之前,我们首先需要对ABP框架有一个大概的了解,ABP框架的全称是:Asp.Net Boilerplate Project(即Asp.Net 的样板项目)顾名思义就是能够通过 ...
- ABP项目启动及源代码结构
在整体介绍ABP项目之前我们需要从官方网站下载模板项目,下载以后放到一个本地目录下,启动VS打开源代码.具体下载的步骤如下: 一 创建ABP项目模板 1 进入官方网站然后选择特定的样板项目. 2 ...
- 【转】C# ABP WebApi与Swagger UI的集成
以前在做WebAPI调用测试时,一直在使用Fiddler测试工具了,而且这个用起来比较繁琐,需要各种配置,并且不直观,还有一点是还得弄明白URL地址和要传递的参数,然后才能调用. 最近新入职,公司里 ...
- 开发完成的springboot项目扩展 swagger
第一步:pom.xml 引入 swagger 配置 <swagger.version>2.9.2</swagger.version> <!--swagger start- ...
- 在Redhat上为.Net 项目构建基于Jenkins + Github + Mono 的持续集成环境
在Redhat enterprise 6.5 的服务器上,为在gutub 上的 .net 项目构建一个持续集成环境,用到了Jenkins和mono.因公司的服务器在内网,访问外网时要通过代理,所以在很 ...
- 前端项目构建之yeoman
各位好啊,我又和大家见面了,也许你已经不记得大明湖畔的容嬷嬷,但是只要记得博客园中的我就好,希望我的博客能像一股清风,为你驱散炎热的酷暑,好了,废话不多说,开始上干货,我今天带给大家的是前端工程化开发 ...
- Castle Windsor常用介绍以及其在ABP项目的应用介绍
最近在研究ABP项目,有关ABP的介绍请看阳光铭睿 博客,ABP的DI和AOP框架用的是Castle Windsor下面就对Castle Windsor项目常用方法介绍和关于ABP的使用总结 1.下载 ...
- AutoMapper之ABP项目中的使用介绍
最近在研究ABP项目,昨天写了Castle Windsor常用介绍以及其在ABP项目的应用介绍 欢迎各位拍砖,有关ABP的介绍请看阳光铭睿 博客 AutoMapper只要用来数据转换,在园里已经有很多 ...
随机推荐
- 常用css属性
一.常用css属性 (1) *block(区块) 行高 line-height:数值 | inherit | normal;字间距 letter-spacing: 数值 | inherit | nor ...
- iOS-静态库,动态库,framework浅析(三)
创建framework静态库 第一步,新建项目 新建项目.png 第二步,删除系统默认创建的[FMDB.h]和[FMDB.m]文件,导入需要打包的源文件. 导入源码后的工程.png 第三步,修改项目配 ...
- [qemu][kvm] 在一个vmware虚拟机里安装qemu-kvm虚拟机
说起来这个需求,简直是傻傻的.但却实实在在的摆在我的面前.... VM无外乎就是为了模拟场景:我现在要的场景就是一台很多个core的linux主机.但是我只有一个装了windows的笔记本.上边有一个 ...
- [administrative][archlinux][clonezilla][disk cloning] 一块 windows 10 硬盘的备份
https://wiki.archlinux.org/index.php/disk_cloning https://wiki.archlinux.org/index.php/full_system_b ...
- Flash片头loading与MovieClipLoader
//创建侦听器,侦听是否加载完成 var loader = new MovieClipLoader(); loader.onLoadComplete = function(obj) { if(obj ...
- ORACLE监听配置及测试实验(2)
实验四 在tnsname.ora里添加默认监听代号 [oracle@oracle01 admin]$ vi tnsnames.ora 添加一行 PORT1528=(ADDRESS = (PROTOCO ...
- 对称加密----AES和DES加密、解密
目前主流的加密方式有:(对称加密)AES.DES (非对称加密)RSA.DSA 调用AES/DES加密算法包最精要的就是下面两句话: Cipher cipher = Cipher.get ...
- java 线程(六)死锁
package cn.sasa.demo4; public class ThreadDemo { public static void main(String[] args){ DeadLockRun ...
- 【PyQt5-Qt Designer】日历(QCalendarWidget)
日历(QCalendarWidget)+爬虫API调用+自定义发送信号(传入2个参数) 总体介绍 QCalendarWidget类提供了一个基日历小部件,允许用户选择一个日期. 该小部件使用当前的月份 ...
- JDBC的简单封装
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...