C# 存储库模式中的验证检查在哪里?
假设我有一个名为User的实体,它有许多帖子。对于删除帖子,我的服务如下所示:C# 存储库模式中的验证检查在哪里?,c#,design-patterns,architecture,repository-pattern,C#,Design Patterns,Architecture,Repository Pattern,假设我有一个名为User的实体,它有许多帖子。对于删除帖子,我的服务如下所示: void DeletePost(int postId, int userId); 我的验证代码在哪里?(确保用户具有删除权限)。我是否应该在存储库中通过1个数据库调用执行此操作?或者我应该在服务层执行此检查,在该层我进行了2次调用: 通过userId获取用户 对用户进行验证后调用delete 我将有两个存储库,一个用于用户,一个用于帖子,每个存储库如下所示: // From the PostRepository.
void DeletePost(int postId, int userId);
我的验证代码在哪里?(确保用户具有删除权限)。我是否应该在存储库中通过1个数据库调用执行此操作?或者我应该在服务层执行此检查,在该层我进行了2次调用:
// 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);
这是一条业务规则,因此我不会将其放在数据访问层(存储库)上。我认为最好的地方是服务层。我认为在进入存储库之前,应该进行一些验证,即在域模型/业务层 您可以选择深入验证,也可以在存储库层执行验证;这可能是一个好主意,也可能不是一个好主意,这取决于验证的目的;如果验证是特定于域的,那么我觉得验证应该在域模型中。另一方面,如果验证在本质上不太特定于领域,更一般,那么将其放在存储库/数据访问层意味着可以在重用数据访问层的其他项目中重用验证