asp.net zero 8.2 learning -5- implement CRUD services and API test

CRUD implemented in a single table in asp.net zero:

Write CRUD service method
API Testing Services

Deleting Entities

Note further modified to delete entities Delete (EntityDto input), can first query, you can also delete the entity directly delete an entity to be converted to pay attention to the type of the primary key

public async Task Delete(EntityDto input)
{
    //先查询再修改
    //var demoObject = await _demoObjectRepository.GetAsync(input.Id);
    //await _demoObjectRepository.DeleteAsync(demoObject);

    //直接删除实体,注意转换id,不转换则删不了
    await _demoObjectRepository.DeleteAsync((int)input.Id);
}

Queries entity

When paging query data sets, you need to sort remapping, Entity Framework 3.1 may be the problem, it could be a problem System.Linq.Dynamic.Core assembly, if the first mapping reordering pages, an error occurs: the specific reasons I have not found another point CountAsync need to reference using Abp.Linq.Extensions; OrderBy need to reference the dynamic query using System.Linq.Dynamic.Core;

Query entity reported errors:

Here is the code (first sort remapped) modified:

public async Task<PagedResultDto<GetDemoObjectForViewDto>> GetAll(GetAllDemoObjectInput input)
{
    //注意这里要用Abp.Linq.Extensions,否则返回的是IEnumerable类型
    var filter = _demoObjectRepository.GetAll()
        .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => e.Name.Contains(input.Filter))
        .WhereIf(!string.IsNullOrWhiteSpace(input.NameFilter), e => e.Name.Equals(input.NameFilter));

    //先排序,再映射
    filter = filter.OrderBy(input.Sorting ?? "id asc");//OrderBy来自System.Linq.Dynamic.Core

    var query = (from o in filter
                    orderby o.Id
                    select new GetDemoObjectForViewDto()
                    {
                        DemoObject = ObjectMapper.Map<DemoObjectDto>(o)
                    });

    var totalCount = await query.CountAsync(); //CountAsync来自Abp.Linq.Extensions

    var demoObject = await query
        .PageBy(input)
        .ToListAsync();


    var result = new PagedResultDto<GetDemoObjectForViewDto>()
    {
        TotalCount = totalCount,
        Items = demoObject
    };
    return result;

}

Here is the entire service categories:

using Abp.Application.Services.Dto;
using Abp.Collections.Extensions;
using Abp.Domain.Repositories;
using EDU.SIS.Demo.Dtos;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Abp.Linq.Extensions;
using System.Linq.Dynamic.Core;

namespace EDU.SIS.Demo
{
    public class DemoObjectAppService : SISAppServiceBase, IDemoObjectAppService
    {
        private readonly IRepository<DemoObject> _demoObjectRepository;
        public DemoObjectAppService(IRepository<DemoObject> demoObjectRepository)
        {
            _demoObjectRepository = demoObjectRepository;
        }

        /// <summary>
        /// 创建和修改
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task CreateOrEdit(CreateOrEditDemoObjectDto input)
        {
            if (input.Id==null)
            {
                //创建
               await Create(input);
            }
            else
            {
                //修改
                await Update(input);
            }
        }

        /// <summary>
        /// 创建实体
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        private async Task Create(CreateOrEditDemoObjectDto input)
        {
            var demoObject = ObjectMapper.Map<DemoObject>(input);
            await  _demoObjectRepository.InsertAsync(demoObject);
        }

        /// <summary>
        /// 修改实体
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        private async Task Update(CreateOrEditDemoObjectDto input)
        {
            var demoObject = await _demoObjectRepository.FirstOrDefaultAsync((int)input.Id);
            var demo = ObjectMapper.Map(input, demoObject);

            //await _demoObjectRepository.UpdateAsync(demo);
        }

        /// <summary>
        /// 数据删除
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task Delete(EntityDto input)
        {
            var demoObject = await _demoObjectRepository.GetAsync(input.Id);
            await _demoObjectRepository.DeleteAsync(demoObject);
        }

        /// <summary>
        /// 分页查询所有实体
        /// </summary>
        /// <param name="input">分页排序筛选</param>
        /// <returns></returns>
        public async Task<PagedResultDto<GetDemoObjectForViewDto>> GetAll(GetAllDemoObjectInput input)
        {
            //注意这里要用Abp.Linq.Extensions,否则返回的是IEnumerable类型
            var filter = _demoObjectRepository.GetAll()
                .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => e.Name.Contains(input.Filter))
                .WhereIf(!string.IsNullOrWhiteSpace(input.NameFilter), e => e.Name.Equals(input.NameFilter));

            //先排序,再映射
            filter = filter.OrderBy(input.Sorting ?? "id asc");//OrderBy来自System.Linq.Dynamic.Core

            var query = (from o in filter
                         orderby o.Id
                         select new GetDemoObjectForViewDto()
                         {
                             DemoObject = ObjectMapper.Map<DemoObjectDto>(o)
                         });

            var totalCount = await query.CountAsync(); //CountAsync来自Abp.Linq.Extensions

            var demoObject = await query
                .PageBy(input)
                .ToListAsync();


            var result = new PagedResultDto<GetDemoObjectForViewDto>()
            {
                TotalCount = totalCount,
                Items = demoObject
            };
            return result;

        }

        /// <summary>
        /// 获取修改数据详情
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task<GetDemoObjectForEditOutput> GetDemoObjectForEdit(EntityDto input)
        {
            var demoObject = await _demoObjectRepository.GetAsync(input.Id);
            var result = new GetDemoObjectForEditOutput()
            {
                DemoObject = ObjectMapper.Map<DemoObjectDto>(demoObject)
            };
            return result;
        }

        /// <summary>
        /// 获取单条数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task<GetDemoObjectForViewDto> GetDemoObjectForView(int id)
        {
            var demoObject = await _demoObjectRepository.GetAsync(id);
            var result = new GetDemoObjectForViewDto()
            {
               DemoObject =  ObjectMapper.Map<DemoObjectDto>(demoObject)
            };
            return result;
        }
    }
}

API test

Paging query:

Creating entity

Modifying Entities

Deleting Entities

When you delete an entity, not by post, prompts 405 errors, have not found the reason may be that you need to pass http header parameters, here only use the delete method, you can delete entities:

Query a single entity

Guess you like

Origin www.cnblogs.com/AlexanderZhao/p/12355926.html