CRUDはasp.netゼロに単一のテーブルで実現しました。
書き込みCRUDサービスメソッドの
APIテストサービス
エンティティを削除します
注は、第1のクエリは、あなたも直接エンティティを削除するエンティティを削除することができ、削除するエンティティの削除(EntityDto入力)に変更し、主キーの種類に注意を払うに変換します
public async Task Delete(EntityDto input)
{
//先查询再修改
//var demoObject = await _demoObjectRepository.GetAsync(input.Id);
//await _demoObjectRepository.DeleteAsync(demoObject);
//直接删除实体,注意转换id,不转换则删不了
await _demoObjectRepository.DeleteAsync((int)input.Id);
}
クエリエンティティ
クエリデータセットをページングするとき、あなたは再マッピングソートする必要がある、Entity Frameworkの3.1が問題であってもよい第1のマッピングがページを並べ替えた場合、それは、アセンブリSystem.Linq.Dynamic.Core問題になる可能性が、エラーが発生します。具体的な理由をSystem.Linq.Dynamic.Coreを使用して動的クエリを参照する[並べ替えの必要性、私は別のAbp.Linq.Extensionsを使用して参照するポイントCountAsyncの必要性を発見していません。
クエリエンティティはエラーを報告した。
ここでは、コード(再マッピング最初の並べ替え)が変更されます。
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;
}
ここでは、全体のサービスカテゴリであります:
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テスト
ページングクエリ:
エンティティを作成します
エンティティの変更
エンティティを削除します
あなたがいないポストで、エンティティを削除すると、プロンプト405エラーが、その理由は、あなたがここだけ、あなたはエンティティを削除することができますdeleteメソッドを使用して、HTTPヘッダパラメータを渡す必要があることかもしれ発見していません。