在N层架构中处理非删除实体的最佳实践方法是什么?所讨论的体系结构具有服务层和存储库层。存储库是唯一可以直接访问数据库的层(通过ORM)。目前,存储库层主要处理CRUD操作。该层是否应该根据给定的状态处理实体的检索?
让我解释一下我们系统中状态的使用。我们想使用status来删除实体。因此,我们将其状态设置为Deleted,而不是删除User实体。现在,用户存储库公开了一个Get方法。调用不带任何参数的Get应返回系统中的所有用户,无论其状态如何,但如果我们只想获得活动用户,最好是在服务层或存储库层中处理它。如果我们要在Service层中进行,我们需要在Repository Get方法响应中提出一个过滤器。如果我们在Repository层中执行它,我们将获取Get获取状态枚举,因此您可以调用Get(Status.Active)。处理这样的事情的最佳方法是什么?
答案 0 :(得分:0)
我建议限制Get(id)检索特定实体的详细信息,然后实现某种类型的Find / Search功能,该功能接受SearchCriteria对象来定义搜索参数(例如Status)。要回答关于过滤器的位置的问题,我建议数据库,因为它针对查询执行进行了优化。