56 lines
2.7 KiB
Markdown
56 lines
2.7 KiB
Markdown
## 简介
|
||
> 想做一个快乐的Crud boy??好,满足你
|
||
|
||
可能绝大部分简单的业务,真的只是不用类型的Crud,大量的重复代码,使用cv方式,不够优雅
|
||
|
||
框架内部内部封装各种场景下的crud
|
||
|
||
## 使用
|
||
在应用层继承`YiCrudAppService`crud服务即可
|
||
在这之前,你应该先了解各个dto的作用:
|
||
|
||
> 注意,我们当然可以直接使用Abp中的`CrudAppService`,但由于Abp内置的Crud还缺少一些常用的接口,比如批量删除等方式,所以推荐使用`YiCrudAppService`,使用上完全没有区别
|
||
|
||
``` cs
|
||
- TGetOutputDto (单查返回的dto)
|
||
- TGetListOutputDto (多查返回的dto)
|
||
- TGetListInput (多查的条件)
|
||
- TCreateInput (创建的dto)
|
||
- TUpdateInput (更新的dto)
|
||
```
|
||
根据Dto业务场景,它有很多种选项,依次为:
|
||
``` cs
|
||
- YiCrudAppService<TEntity, TEntityDto, TKey>
|
||
- YiCrudAppService<TEntity, TEntityDto, TKey, TGetListInput>
|
||
- YiCrudAppService<TEntity, TEntityDto, TKey, TGetListInput, TCreateInput>
|
||
- YiCrudAppService<TEntity, TEntityDto, TKey, TGetListInput, TCreateInput, TUpdateInput>
|
||
- YiCrudAppService<TEntity, TGetOutputDto, TGetListOutputDto, TKey, TGetListInput, TCreateInput, TUpdateInput>
|
||
```
|
||
dto可以放到`Application.Contracts`层,同理接口继承`IYiCrudAppService`即可
|
||
```cs
|
||
- YiCrudAppService<TEntityDto, TKey>
|
||
- YiCrudAppService<TEntityDto, TKey, TGetListInput>
|
||
- YiCrudAppService<TEntityDto, TKey, TGetListInput, TCreateInput>
|
||
- YiCrudAppService<TEntityDto, TKey, TGetListInput, TCreateInput, TUpdateInput>
|
||
- YiCrudAppService<TGetOutputDto, TGetListOutputDto, TKey, TGetListInput, TCreateInput, TUpdateInput>
|
||
```
|
||
> 可以发现,接口,不应该与实体有直接关系
|
||
|
||
其中,在YiCrudAppService中,我们提供了一些内置的方法:
|
||
```cs
|
||
public virtual async Task<TGetOutputDto> CreateAsync(TCreateInput input)
|
||
public virtual async Task<bool> DeleteAsync(string id)
|
||
public virtual async Task<TGetOutputDto> UpdateAsync(TKey id, TUpdateInput input)
|
||
public virtual async Task<TGetOutputDto> GetAsync(TKey id)
|
||
public virtual async Task<PagedResultDto<TGetListOutputDto>> GetListAsync(TGetListInput input)
|
||
```
|
||
同时还有映射关系:
|
||
``` cs
|
||
protected virtual Task<TGetOutputDto> MapToGetOutputDtoAsync(TEntity entity)
|
||
protected virtual Task<List<TGetListOutputDto>> MapToGetListOutputDtosAsync(List<TEntity> entities)
|
||
protected virtual Task<TGetListOutputDto> MapToGetListOutputDtoAsync(TEntity entity)
|
||
protected virtual Task<TGetOutputDto> MapToGetOutputDtoAsync(TEntity entity)
|
||
protected virtual Task<List<TGetListOutputDto>> MapToGetListOutputDtosAsync(List<TEntity> entities)
|
||
protected virtual Task<TGetListOutputDto> MapToGetListOutputDtoAsync(TEntity entity)
|
||
```
|
||
另外,它也提供了对应的`仓储`及`当前用户`等常用属性 |