我正在尝试将过滤器传递给PagedAndSortedResultRequest。
public class PagedAndSortedResultRequestDto : PagedResultRequestDto, IPagedAndSortedResultRequest
{
public virtual string Sorting { get; set; }
}
我想将一个简单的名称 - 值对列表传递给此DTO,以便过滤结果集。
当前的实现不允许我这样做,所以我必须创建一个继承PagedAndSortedResultRequestDto的新类。我想知道这是否是实现我的目标的正确途径,并且在框架中有适应过滤器的任何里程碑。
由于
答案 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;
}
//...
}
希望它可以帮助任何需要它的人。