【问题标题】:Where does validation check go in repository pattern?存储库模式中的验证检查在哪里?
【发布时间】:2011-06-03 16:16:23
【问题描述】:

假设我有一个名为 User 的实体,它有很多帖子。删除帖子时,我的服务如下所示:

void DeletePost(int postId, int userId);

我的验证码去哪了? (确保用户有删除权限)。我应该通过 1 个数据库调用在存储库中执行此操作吗?或者我应该在我进行 2 次调用的服务层中进行此检查:

  1. 通过 userId 获取用户。
  2. 对用户进行验证后调用 delete。

我将有 2 个存储库,1 个用于用户,1 个用于帖子,每个看起来像这样:

// From the PostRepository.
void Delete(int postId); //May have to add a userId param if I do validation in repository
//From the UserRepository.
User GetUser(int userId);

【问题讨论】:

    标签: c# design-patterns architecture repository-pattern


    【解决方案1】:

    这是一个业务规则,所以我不会将它放在数据访问层(存储库)上。我想说最好的地方是服务层。

    【讨论】:

      【解决方案2】:

      我认为一些验证应该在您进入域模型/业务层中的存储库之前进行

      您可以选择深入验证并在存储库层执行验证;这可能是一个好主意,也可能不是一个好主意,具体取决于验证的目的;如果验证是特定于域的,那么我觉得验证应该在域模型中。另一方面,如果验证在本质上不是特定领域而更通用,那么将其放在存储库/数据访问层意味着验证可以在数据访问层被重用的其他项目中重用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-17
        • 1970-01-01
        • 1970-01-01
        • 2019-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多