我正在尝试覆盖AsyncCrudAppService
调用 - “GetAll”以更改返回的排序顺序。
首先,重写方法,实际上是正确的方法吗?
如果是的话,我可以举一个例子,因为我对如何使用PagedResultDto<T>
返回类型感到有点迷失吗?
如果没有,请告诉我在哪里可以找到。
答案 0 :(得分:3)
从技术上讲,你可以,但如果可以避免的话,真的不应该在GetAll()
进行排序。 CRUD App Services还定义了已被GetAll使用的虚拟方法ApplySorting()
,也可以被覆盖。
您可以在调用GetAll()
时传递字符串以进行动态排序,它已经可以正常工作。
await _myAppService.GetAll(new PagedAndSortedResultRequestDto() { Sorting = "Name DESC", MaxResultCount = pageSize, SkipCount = skipCount })
如果您希望更好地控制排序行为,例如使用默认值或传入格式更好的查询字符串,请覆盖ApplySorting()
protected override IQueryable<SomeEntity> ApplySorting(IQueryable<SomeEntity> query, PagedAndSortedResultRequestDto input)
{
var sortBy = "LastModificationTime DESC,CreationTime DESC";
switch (input.Sorting?.ToLower())
{
case "name-asc":
sortBy = "Name";
break;
case "name-desc":
sortBy = "Name DESC";
break;
}
input.Sorting = sortBy;
return base.ApplySorting(query, input);
}