[aspnetboilerplate]如何扩展PagedAndSortedResultRequestDto以接受过滤器?

时间:2017-12-07 21:39:39

标签: aspnetboilerplate

我正在尝试将过滤器传递给PagedAndSortedResultRequest。

public class PagedAndSortedResultRequestDto : PagedResultRequestDto, IPagedAndSortedResultRequest
{
    public virtual string Sorting { get; set; }
}

我想将一个简单的名称 - 值对列表传递给此DTO,以便过滤结果集。

当前的实现不允许我这样做,所以我必须创建一个继承PagedAndSortedResultRequestDto的新类。我想知道这是否是实现我的目标的正确途径,并且在框架中有适应过滤器的任何里程碑。

由于

1 个答案:

答案 0 :(得分:0)

正如@AlperEbicoglu所建议的,这是我的解决方案。 该解决方案需要三个部分。继承请求dto类,AppService传递类,并在AppService内部重写CreateFilteredQuery方法。

//Inherited Request DTO Class
[Serializable]
public class MyResultRequestDto : PagedAndSortedResultRequestDto
{
    public virtual int? ChannelId { get; set; }
}

//AppService 
public class MyAppService : AsyncCrudAppService<Tenant, MyDto, int, MyResultRequestDto, CreateMyDto, MyDto>, IMyAppService
{

    //Overridden CreateFilteredQuery inside of MyAppService
    protected override IQueryable<MyEntity> CreateFilteredQuery(MyResultRequestDto input)
    {
        var query = Repository.GetAll();

        if (input.ChannelId.HasValue)
        {
            query = query.Where(t => t.ChannelId == input.ChannelId.Value);
        }
        return query;
    }
//...
}

希望它可以帮助任何需要它的人。