.net 存储库、数据协定类和具有任意表达式谓词的筛选请求

.net 存储库、数据协定类和具有任意表达式谓词的筛选请求,.net,repository,application-design,.net,Repository,Application Design,我们的数据访问层架构如下: 类,该类映射到DB表。比如说,订单。它具有类型为string的属性Status 数据协定类,具有某些枚举类型的属性状态。(数据库包含此枚举的字符串表示形式) 实体框架支持的存储库,在内部获取Orders,通过AutoMapper将其转换为OrderContract,并返回这些OrderContracts 现在我们有一个任务要在这个存储库中实现这个方法,它将能够使用任意条件(谓词)查询订单。如果存储库只返回订单,我将添加如下方法: public List<Orde

我们的数据访问层架构如下:

  • 类,该类映射到DB表。比如说,
    订单
    。它具有类型为
    string
    的属性
    Status

  • 数据协定类,具有某些枚举类型的属性
    状态
    。(数据库包含此枚举的字符串表示形式)

  • 实体框架支持的存储库,在内部获取
    Order
    s,通过
    AutoMapper
    将其转换为
    OrderContract
    ,并返回这些
    OrderContract
    s

  • 现在我们有一个任务要在这个存储库中实现这个方法,它将能够使用任意条件(谓词)查询订单。如果存储库只返回
    订单
    ,我将添加如下方法:

    public List<Order> FilterBy( Expression<Func<Order, bool> predicate );
    

    公共列表过滤器by(ExpressionI无法理解您想要什么,但您始终可以编写一个返回IQueryable的方法,然后将其与其他查询连接以获得所需的输出。如果您想编写动态谓词,可以查看LINQkit.Suggestion-存储库应返回数据库对象,然后您需要转换它们我想问的是存储库中过滤方法实现的最佳解决方案,它返回数据协定类并在内部与DAL类一起工作。