【问题标题】:[aspnetboilerplate]How to extend PagedAndSortedResultRequestDto to accept filters?[aspnetboilerplate]如何扩展 PagedAndSortedResultRequestDto 以接受过滤器?
【发布时间】:2017-12-14 04:20:54
【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

  • 过滤还是排序?
  • 这没有里程碑。您可以从 PagedAndSortedResultRequestDto 继承
  • 过滤器,@aaron.
  • @AlperEbicoglu 很高兴知道。

标签: aspnetboilerplate


【解决方案1】:

按照@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;
    }
//...
}

希望对需要的人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 2011-06-16
    • 2017-01-06
    • 2016-01-17
    • 2011-09-14
    • 2011-12-05
    • 2012-03-11
    相关资源
    最近更新 更多