前段时间在学习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及代码生成器的更多相关文章

  1. 在Abp中集成Swagger UI功能

    在Abp中集成Swagger UI功能 1.安装Swashbuckle.Core包 通过NuGet将Swashbuckle.Core包安装到WebApi项目(或Web项目)中. 2.为WebApi方法 ...

  2. ABP项目概述

    在系统性介绍整个ABP框架之前,我们首先需要对ABP框架有一个大概的了解,ABP框架的全称是:Asp.Net Boilerplate Project(即Asp.Net 的样板项目)顾名思义就是能够通过 ...

  3. ABP项目启动及源代码结构

    在整体介绍ABP项目之前我们需要从官方网站下载模板项目,下载以后放到一个本地目录下,启动VS打开源代码.具体下载的步骤如下: 一   创建ABP项目模板 1 进入官方网站然后选择特定的样板项目. 2 ...

  4. 【转】C# ABP WebApi与Swagger UI的集成

    以前在做WebAPI调用测试时,一直在使用Fiddler测试工具了,而且这个用起来比较繁琐,需要各种配置,并且不直观,还有一点是还得弄明白URL地址和要传递的参数,然后才能调用.  最近新入职,公司里 ...

  5. 开发完成的springboot项目扩展 swagger

    第一步:pom.xml 引入 swagger 配置 <swagger.version>2.9.2</swagger.version> <!--swagger start- ...

  6. 在Redhat上为.Net 项目构建基于Jenkins + Github + Mono 的持续集成环境

    在Redhat enterprise 6.5 的服务器上,为在gutub 上的 .net 项目构建一个持续集成环境,用到了Jenkins和mono.因公司的服务器在内网,访问外网时要通过代理,所以在很 ...

  7. 前端项目构建之yeoman

    各位好啊,我又和大家见面了,也许你已经不记得大明湖畔的容嬷嬷,但是只要记得博客园中的我就好,希望我的博客能像一股清风,为你驱散炎热的酷暑,好了,废话不多说,开始上干货,我今天带给大家的是前端工程化开发 ...

  8. Castle Windsor常用介绍以及其在ABP项目的应用介绍

    最近在研究ABP项目,有关ABP的介绍请看阳光铭睿 博客,ABP的DI和AOP框架用的是Castle Windsor下面就对Castle Windsor项目常用方法介绍和关于ABP的使用总结 1.下载 ...

  9. AutoMapper之ABP项目中的使用介绍

    最近在研究ABP项目,昨天写了Castle Windsor常用介绍以及其在ABP项目的应用介绍 欢迎各位拍砖,有关ABP的介绍请看阳光铭睿 博客 AutoMapper只要用来数据转换,在园里已经有很多 ...

随机推荐

  1. sql server 按外键分组查询

    SELECT ROW_NUMBER() over(partition by a.yngrbsh order by a.SFRQ desc ) RN, c.' and a.LSH not in(sele ...

  2. 关于学习oi的一些事项

    我只是突然有感而发!(脑抽罢了 我其实是那种一直都没有计划说去学什么的人. 当然也不是那种点开洛谷一道题去写这道题不会就去学习相应的知识点的人. 随着洛谷 poj bzoj HDU CH Vojs 等 ...

  3. python作用域问题

    今天出了个低级的错误,最后确定是作用域问题,特回顾知识点如下: 在Python程序中创建.改变.查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域. Python的作 ...

  4. java JDBC (二) 防止注入/参数化

    package cn.sasa.demo2; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Pr ...

  5. java 抽象类 abstract

    package cn.sasa.com; //抽象类 被abstract修饰的类 public abstract class Animal { //抽象类的成员变量 的定义 与 一般类是一样的 pri ...

  6. Javabean非空变量校验工具

    摘要 调研java Class getDeclaredFields() 与getFields()的区别,设计请求参数为Javabean时,基于反射机制校验其中非空变量的公共方法. java Class ...

  7. mmu裸机程序

    硬件平台:JZ2440 init.c     -->  初始化sdram,创建页表 leds.c   -->  使用init.c初始化的VA地址控制led start.s  -->  ...

  8. es中的停用词

    停用词主要是为了提升性能与精度.从早期的信息检索到如今,我们已习惯于磁盘空间和内存被限制为很小一部分,所以 必须使你的索引尽可能小. 每个字节都意味着巨大的性能提升. 词干提取的重要性不仅是因为它让搜 ...

  9. 帝国cms添加修改会员字段时字段名不能带数字,否则注册页会出现空白

    这几天ytkah在整帝国cms会员模块,根据客户需求添加不同的字段,这个相对不难,可还是遇到了点问题.当时添加会员字段时,在字段名用数字“1”来代表第一次,如下图的字段名“1rwsdy” 但是添加以后 ...

  10. 20181223 Oracle中while

    最近尝试了一次while跑数, declare sysdataend  date:=system-1; startdata  date:=to_date('20181214','YYYYMMDD'); ...