ABP -Vnext框架一步一步入门落地教程——使用ABP -Vnext创建一个WEBAPI接口(二)
开发主题:何谓开发应用服务端
在官方开发教程这一段的内容叫做开发应用服务端,作为现在前后端分离的开发模式来说,一个应用就分为前端页面框架和后端API,页面框架调用WEBAPI实现业务就完事了。所以咱们今天开发一个WEBAPI就叫做应用服务端。
在传统的三层框架美好的年代,一个应用就是数据层、业务逻辑层、前端UI层就打完收工了。但为了实现更高程度的可复用、可扩展、并且能够更大程度的遵循设计模式单一职责开闭原则和里氏替换三大根本原则,现在的软件工程在以前三层架构的模式上研究出了领域驱动模式,而以前追求的对象持久化,把应用程序中的对象和对象的状态存储到数据库当中也发展成为了ORM框架(Object-Relational Mapping,对象关系映射),最终实现低代码甚至是无代码的目标。
回到今天的主题,那我们要开发一个应用的功能,就从数据层业务逻辑层UI层三层发展到了现在ABP这样的模式。
一、创建解决方案:
二、创建数据实体:
- 创建实体
- 把实体添加到DTO(数据上下文DbContext)以实现数据持久化
- 将Book实体映射到数据库表
- 执行一次数据迁移
三、创建应用程序:
- 创建 BookDto实体类
- CreateUpdateBookDto
- IBookAppService
- BookAppService
- 自动生成API Controllers
- Swagger UI
创建解决方案
在开始开发之前,请按照入门教程创建名为 Acme.BookStore 的新解决方案.也就是我们上一篇文章创建的源代码。
创建数据实体
第一步:创建实体
启动模板中的领域层分为两个项目:
创建Book实体
Acme.BookStore.Domain包含你的实体, 领域服务和其他核心域对象.
Acme.BookStore.Domain.Shared包含可与客户共享的常量,枚举或其他域相关对象.
在解决方案的领域层(Acme.BookStore.Domain项目)中定义你的实体.
该应用程序的主要实体是Book. 在Acme.BookStore.Domain项目中创建一个 Books 文件夹(命名空间),并在其中添加名为 Book 的类,如下所示:
using System;
using Volo.Abp.Domain.Entities.Auditing;
namespace Acme.BookStore.Books
{
public class Book : AuditedAggregateRoot<Guid>
{
public string Name { get; set; }
public BookType Type { get; set; }
public DateTime PublishDate { get; set; }
public float Price { get; set; }
}
}
ABP为实体提供了两个基本的基类: AggregateRoot和Entity. Aggregate Root是领域驱动设计 概念之一. 可以视为直接查询和处理的根实体(请参阅实体文档).
Book实体继承了AuditedAggregateRoot,AuditedAggregateRoot类在AggregateRoot类的基础上添加了一些基础审计属性(例如CreationTime, CreatorId, LastModificationTime 等). ABP框架自动为你管理这些属性.
Guid是Book实体的主键类型.
为了保持简单,本教程将实体属性保留为 public get/set . 如果你想了解关于DDD最佳实践,请参阅实体文档.
BookType枚举
Book实体使用了BookType枚举. 在Acme.BookStore.Domain.Shared项目中创建Books文件夹(命名空间),并在其中添加BookType:
点击查看代码
namespace Acme.BookStore.Books
{
public enum BookType
{
Undefined,
Adventure,
Biography,
Dystopia,
Fantastic,
Horror,
Science,
ScienceFiction,
Poetry
}
}
最终的文件夹/文件结构应该如下所示:


第二步:把实体添加到DTO(数据上下文DbContext)
第三步:将Book实体映射到数据库表
第四步:执行一次数据迁移
创建应用程序
第一步:创建 BookDto实体类
第二步:CreateUpdateBookDto
第三步:IBookAppService
第四步:BookAppService
第五步:自动生成API Controllers
第六步:Swagger UI
ABP -Vnext框架一步一步入门落地教程——使用ABP -Vnext创建一个WEBAPI接口(二)的更多相关文章
- 一步一步学Silverlight 2系列(1):创建一个基本的Silverlight应用
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- ASP.NET Aries 入门开发教程2:配置出一个简单的列表页面
前言: 朋友们都期待我稳定地工作,但创业公司若要躺下,也非意念可控. 若人生注定了风雨飘摇,那就雨中前行了. 最机开始看聊新的工作机会,欢迎推荐,创业公司也可! 同时,趁着自由时间,抓紧把这系列教程给 ...
- Docker入门(windows版),利用Docker创建一个Hello World的web项目
Docker 当大家点开这篇博客的时候,相信大家对docker多多少少也有些认识了,最近学习docker这门技术,略微有些心得,写篇文章记录一下学习过程并帮大家跳过一些坑. docker的核心有两个, ...
- ABP VNext框架中Winform终端的开发和客户端授权信息的处理
在ABP VNext框架中,即使在它提供的所有案例中,都没有涉及到Winform程序的案例介绍,不过微服务解决方案中提供了一个控制台的程序供了解其IDS4的调用和处理,由于我开发过很多Winform项 ...
- 系列文章--一步一步学Silverlight2
概述 由TerryLee编写的<Silverlight 2完美征程>一书,已经上市,在该系列文章的基础上补充了大量的内容,敬请关注.官方网站:http://www.dotneteye.cn ...
- 一步一步学Silverlight 2系列文章
概述 由TerryLee编写的<Silverlight 2完美征程>一书,已经上市,在该系列文章的基础上补充了大量的内容,敬请关注.官方网站:http://www.dotneteye.cn ...
- ASP.NET + MVC5 入门完整教程八 -—-- 一个完整的应用程序(上)
https://blog.csdn.net/qq_21419015/article/details/80509513 SportsStore 1.开始创建Visual Studio 解决方案和项目这里 ...
- ASP.NET + MVC5 入门完整教程七 -—-- MVC基本工具(上)
https://blog.csdn.net/qq_21419015/article/details/80474956 这里主要介绍三类工具之一的 依赖项注入(DI)容器,其他两类 单元测试框架和模仿工 ...
- BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块
NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...
- 超实用的Flask入门基础教程,新手必备!
Flask入门基础教程 Flask简介 Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活.轻便.安全且容易上手.它可以很好地结合MVC模式进行开发,开发人员分工合 ...
随机推荐
- mainWindow = new BrowserWindow 打开慢的原因 electron 已解决 Windows Defender 拦截导致
Windows Defender 导致拦截 不是变量的事儿 解决方案: win10 开始 设置 - windows 安全中心 - 病毒和威胁防护 - 病毒和威胁防护设置 - 排除项 - 添加排除项 将 ...
- 简单实用算法——二分查找法(BinarySearch)
目录 算法概述 适用情况 算法原理 算法实现(C#) 实际应用:用二分查找法找寻边界值 参考文章 算法概述 二分查找(英语:binary search),也叫折半查找(英语:half-interval ...
- 日常办公——Excel中重复打印标题的设置
打印预览时,所在数据行或列不能显示在同一页,在打印区域之外还有内容,为了方便阅读,可使用顶端标题行重复或左端标题行重复,具体方法如下: 按顺序操作,完成后点击确定即完成操作.
- Java/Kotlin Double保留小数点后几位
下面以保留2位小数,且按照四舍五入规则的例子 方法 1.BigDecimal.setScale() 此方法得到的还是个double数值 double one = 5.864; BigDecimal t ...
- Android开发过程中的坑及解决方法收录(7)
1.无法找到自定义View的实例对象 问题描述: 由于经常要使用到两个TextView的布局,所以,我打算将其封装成一个自定义View,封装成功,界面能够成功显示了,但是,想给它设置点击监听器的时候就 ...
- day08-2-Thymeleaf
服务器渲染技术-Thymeleaf 1.基本介绍 官方在线文档:Read online 文档下载:Thymeleaf 3.1 PDF, EPUB, MOBI Thymeleaf 是什么 Thymele ...
- WPF 模仿微信顶部断网提示气泡
直接看顶部气泡的效果吧 顶部气泡主要要做三个工作 1.定位到顶部居中 2.气泡需要跟随窗体 3.气泡不可以遮挡住其他程序界面 原生的WPF Poupu控件不会跟随目标移动且在Z轴上会置顶,所以存在打开 ...
- KingbaseES创建外键与Mysql的差异
Mysql mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.23 | +-----------+ ...
- KingbaseES 原生XML系列五--XML关系表函数
KingbaseES 原生XML系列五--XML关系表函数(QUERY_TO_XML,TABLE_TO_XML,XMLTABLE) XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据 ...
- SSL新年欢乐赛暨BPM退役赛(不含FK)
目录 前言 C 大水题 题目 分析 代码 D 简单数据结构题 题目 分析 代码 H 上次题 题目 分析 代码 J 白给题 题目 分析 代码 前言 A,B水题,E,I原题 实际赛时400分(乐多毁我青春 ...