0

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

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

4

1 回答 1

0

我建议将 Get(id) 限制为检索特定实体的详细信息,然后实现某种类型的 Find/Search 功能,该功能接受 SearchCriteria 对象来定义您的搜索参数(例如状态)。为了回答您关于在哪里进行过滤的问题,我建议使用数据库,因为它针对查询执行进行了优化。

于 2012-11-29T16:11:40.903 回答