[aspnetboilerplate]如何扩展 PagedAndSortedResultRequestDto 以接受过滤器?
[aspnetboilerplate]How to extend PagedAndSortedResultRequestDto to accept filters?
我正在尝试将过滤器传递给 PagedAndSortedResultRequest。
public class PagedAndSortedResultRequestDto : PagedResultRequestDto, IPagedAndSortedResultRequest
{
public virtual string Sorting { get; set; }
}
我想将一个简单的名称-值对列表传递给此 DTO,以便过滤结果集。
当前的实现不允许我这样做,所以我必须创建一个新的 class 继承 PagedAndSortedResultRequestDto。我想知道这是否是实现我的目标的正确途径,是否有任何里程碑可以在框架中容纳过滤器。
谢谢
根据@AlperEbicoglu 的建议,这是我的解决方案。
该解决方案需要三个部分。继承请求 dto class,AppService 传递 class,并覆盖 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;
}
//...
}
希望对有需要的人有所帮助。
我正在尝试将过滤器传递给 PagedAndSortedResultRequest。
public class PagedAndSortedResultRequestDto : PagedResultRequestDto, IPagedAndSortedResultRequest
{
public virtual string Sorting { get; set; }
}
我想将一个简单的名称-值对列表传递给此 DTO,以便过滤结果集。
当前的实现不允许我这样做,所以我必须创建一个新的 class 继承 PagedAndSortedResultRequestDto。我想知道这是否是实现我的目标的正确途径,是否有任何里程碑可以在框架中容纳过滤器。
谢谢
根据@AlperEbicoglu 的建议,这是我的解决方案。 该解决方案需要三个部分。继承请求 dto class,AppService 传递 class,并覆盖 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;
}
//...
}
希望对有需要的人有所帮助。