2.7 KiB
2.7 KiB
简介
想做一个快乐的Crud boy??好,满足你
可能绝大部分简单的业务,真的只是不用类型的Crud,大量的重复代码,使用cv方式,不够优雅
框架内部封装各种场景下的crud
使用
在应用层继承YiCrudAppServicecrud服务即可
在这之前,你应该先了解各个dto的作用:
注意,我们当然可以直接使用Abp中的
CrudAppService,但由于Abp内置的Crud还缺少一些常用的接口,比如批量删除等方式,所以推荐使用YiCrudAppService,使用上完全没有区别
- TGetOutputDto (单查返回的dto)
- TGetListOutputDto (多查返回的dto)
- TGetListInput (多查的条件)
- TCreateInput (创建的dto)
- TUpdateInput (更新的dto)
根据Dto业务场景,它有很多种选项,依次为:
- 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即可
- 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中,我们提供了一些内置的方法:
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)
同时还有映射关系:
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)
另外,它也提供了对应的仓储及当前用户等常用属性