Files
2024-07-21 14:51:28 +00:00

56 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 简介
> 想做一个快乐的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)
```
另外,它也提供了对应的`仓储`及`当前用户`等常用属性