ABP源码分析十六:DTO的设计
IDTO:空接口,用于标注Dto对象。
ComboboxItemDto:用于combobox/list中Item的DTO
NameValueDto<T>/NameValueDto:用于name value键值对的DTO, name为string类型, value为泛型或string类型。
Entity Dto
IEntityDto<TPrimaryKey> :基于Entity的DTO,支持泛型类型的主键。
IEntityDto:基于Entity的DTO,只支持int类型的主键。
EntityDto<TPrimaryKey> : 实现IEntityDto<TPrimaryKey>接口。
EntityDto:实现IEntityDto接口
CreationAuditedEntityDto<TPrimaryKey> :封装了CreationTime和CreatorUserId的EntityDto,CreatorUserId为可空的long类型,支持泛型类型的主键。
CreationAuditedEntityDto:封装了CreationTime和CreatorUserId的EntityDto,CreatorUserId为可空的long类型,只支持int类型的主键。
AuditedEntityDto<TPrimaryKey> :继承了CreationAuditedEntityDto<TPrimaryKey>,同时封装了LastModificationTime和LastModifierUserId,都是可空类型。LastModifierUserId为长整型。支持泛型类型的主键。
AuditedEntityDto :与AuditedEntityDto<TPrimaryKey>的区别仅在于其只支持int类型的主键。
FullAuditedEntityDto<TPrimaryKey> :继承了AuditedEntityDto<TPrimaryKey>的属性,同时封装了软删除的属性:IsDeleted,以及可空类型的DeleterUserId和DeletionTime,其中DeleterUserId为长整型。
FullAuditedEntityDto :与FullAuditedEntityDto<TPrimaryKey>的区别仅在于其只支持int类型的主键。
InPut Dto
IInputDto :用于输入参数的DTO,空接口起标注作用,标识该接口的对象是个DTO,并且需要被validate
EntityRequestInput<TPrimaryKey> : 封装了entity Id的,作为输入参数的DTO,支持泛型类型的主键Id
EntityRequestInput : 封装了entity Id的,作为输入参数的DTO,只支持int类型的主键Id
IDoubleWayDto : 空接口起标注作用,即可以用于输入参数,又可用于结果返回的DTO.
IdInput<TId> :封装了泛型类型的Id的,作为输入参数的DTO
IdInput:封装了int类型的Id的,作为输入参数的DTO
NullableIdInput<TId> : 封装了泛型类型的Id的,作为输入参数的DTO, 同时Id可为空
NullableIdInput : 封装了int类型的Id的,作为输入参数的DTO, 同时Id可为空
Output Dto
IOutputDto : 作为方法结果返回返回的DTO,空接口起标注作用
EntityResultOutput<TPrimaryKey> :封装了entity Id的,作为结果返回的DTO,支持泛型类型的主键Id
EntityResultOutput : 封装了entity Id的,作为方法结果返回的DTO,只支持int类型的主键Id
ListResultOutput<T> : 以List作为方法结果返回的DTO
PagedResultOutput<T> : 以分页的List作为方法结果返回的DTO
IHasTotalCount:封装了TotalCount属性。
IListResult<T> :封装了一个IReadOnlyList<T>集合。
ListResultDto<T> :实现了IListResult<T>接口。
IPagedResult<T> :继承了IHasTotalCount和IListResult<T>接口。
PagedResultDto<T> :继承了ListResultDto<T>,同时实现了IPagedResult<T>接口
ILimitedResultRequest:封装了MaxResultCount
IPagedResultRequest:封装了SkipCount
ISortedResultRequest:封装了Sorting属性
举个例子:QueryableExtensions通过IPagedResultRequest接口对象获取分页的参数
ABP源码分析十六:DTO的设计的更多相关文章
- [Abp 源码分析]十六、后台作业与后台工作者
0. 简介 在某些时候我们可能会需要执行后台任务,或者是执行一些周期性的任务.比如说可能每隔 1 个小时要清除某个临时文件夹内的数据,可能用户会要针对某一个用户群来群发一组短信.前面这些就是典型的应用 ...
- C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库
C# DateTime的11种构造函数 别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...
- ABP源码分析十七:DTO 自动校验的实现
对传给Application service对象中的方法的DTO参数,ABP都会在方法真正执行前自动完成validation(根据标注到DTO对象中的validate规则). ABP是如何做到的? 思 ...
- ABP源码分析十:Unit Of Work
ABP以AOP的方式实现UnitOfWork功能.通过UnitOfWorkRegistrar将UnitOfWorkInterceptor在某个类被注册到IOCContainner的时候,一并添加到该类 ...
- ABP源码分析十二:本地化
本文逐个分析ABP中涉及到locaization的接口和类,以及相互之间的关系.本地化主要涉及两个方面:一个是语言(Language)的管理,这部分相对简单.另一个是语言对应得本地化资源(Locali ...
- ABP源码分析十四:Entity的设计
IEntity<TPrimaryKey>: 封装了PrimaryKey:Id,这是一个泛型类型 IEntity: 封装了PrimaryKey:Id,这是一个int类型 Entity< ...
- ABP源码分析十五:ABP中的实用扩展方法
类名 扩展的类型 方法名 参数 作用 XmlNodeExtensions XmlNode GetAttributeValueOrNull attributeName Gets an attribu ...
- ABP源码分析十八:UI Inputs
以下图中描述的接口和类都在Abp项目的Runtime/Validation, UI/Inputs目录下的.在当前版本的ABP(0.83)中这些接口和类并没有实际使用到.阅读代码时可以忽略,无需浪费时间 ...
- ABP源码分析十九:Auditing
审计跟踪(也叫审计日志)是与安全相关的按照时间顺序的记录,它们提供了活动序列的文档证据,这些活动序列可以在任何时间影响一个特定的操作. AuditInfo:定义如下图中需要被Audit的信息. Aud ...
随机推荐
- Hadoop 中利用 mapreduce 读写 mysql 数据
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
- JS 判断数据类型的三种方法
说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...
- 学习ASP.NET Core,怎能不了解请求处理管道[2]: 服务器在管道中的“龙头”地位
ASP.NET Core管道由注册的服务器和一系列中间件构成.我们在上一篇中深入剖析了中间件,现在我们来了解一下服务器.服务器是ASP .NET Core管道的第一个节点,它负责完整请求的监听和接收, ...
- Hawk 7. 常见问题
本页面您可以通过关键字搜索来获取信息. 理性使用爬虫 爬虫是一种灰色的应用,虽然作为Hawk的设计者,但我依然不得不这么说. 各大网站都在收集和整理数据上花费了大量的精力,因此抓取的数据应当仅仅作为科 ...
- 【热门技术】EventBus 3.0,让事件订阅更简单,从此告别组件消息传递烦恼~
一.写在前面 还在为时间接收而烦恼吗?还在为各种组件间的消息传递烦恼吗?EventBus 3.0,专注于android的发布.订阅事件总线,让各组件间的消息传递更简单!完美替代Intent,Handl ...
- 说一说python的牛比与不爽
本人写了10年php了.今年开始改写python了.不是说php有什么不好,php在自己的势力范围内还是很牛比的.只是我已经不能满足于php那两亩地了. 习惯了脚本,所以很自然就过度到python了. ...
- Struts2入门(六)——国际化
一.前言 1.1.国际化简介 国际化是指应用程序在运行的时候,根据客户端请求来自的国家地区.语言的不同而显示不同的界面(简单说就是根据你的地区显示相关地区的语言,如果你现在在英国,那么显示的语言就是英 ...
- oracle 误删数据恢复
1.根据时间点查系统版本号scn: select timestamp_to_scn(to_timestamp('2013-01-07 11:20:00','YYYY-MM-DD HH:MI:SS')) ...
- 两个变量交换的四种方法(Java)
对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. (代码演示一下) class TestEV //创建一个类 { public static ...
- Linux学习日记-(一)
一.为什么学习Linux 大学时开始接触Linux,最开始学习的是RedHat(小红帽),感觉Linux好像很久不见的老朋友,用起来很舒服(虽然我们用的是DotNet).很喜欢它的命令模式,让我能接触 ...