2012-11-29 110 views
0

处理N层体系结构中的非删除实体的最佳实践方法是什么?有问题的架构有一个服务层和一个存储库层。存储库是唯一直接访问数据库的层(通过ORM)。目前,存储库层主要处理CRUD操作。该层是否应该根据给定的状态处理实体的检索?处理N层体系结构中的非删除实体

让我解释一下在我们的系统中使用状态。我们想使用状态来删除实体。因此,不是删除用户实体,而是将其状态设置为“已删除”。现在,User Repository公开了一个Get方法。在没有任何参数的情况下调用Get应该会返回系统中的所有用户,不管其状态如何,但是如果我们只想获得活动用户,最好是在Service层还是Repository层处理。如果我们要在服务层中完成,我们需要在Repository Get方法响应中提供一个过滤器。如果我们在存储库层中完成它,我们将获得Get状态枚举,因此您可以调用Get(Status.Active)。处理这样的事情最好的办法是什么?

回答

0

我会建议限制获取(id)检索特定实体的细节,然后实现某种类型的接受SearchCriteria对象来定义搜索参数(如状态)的查找/搜索功能。要回答关于在哪里执行过滤器的问题,我会建议数据库,因为它已针对查询执行进行了优化。