从存储库调用存储库

mon*_*lee 10 repository-pattern

我有一个两个存储库目录和用户,我有一个情况,我需要从用户仓库调用目录仓库中的方法,这是一个好的做法还是有更好的方法?

小智 9

您不应该在您的存储库中处理这种授权检查.像"此用户需要发布X评论"这样的业务规则实际上不是存储库查询,而是用户的属性.

此外,在应用程序中非常频繁地进行授权调用,并且您确实不希望每次需要检查时都访问数据库.

您应该正确地将这些权限加载到User对象中,然后为当前请求缓存这些权限,并使用您的域:

public class Service {

    public void Save(Post post)
    {
        if(User.GetCurrentUser().HasEnoughCommentsToPost())
            postRepository.Add(post);
    }

}
Run Code Online (Sandbox Code Playgroud)


dfa*_*dfa 6

我会在上层引用另一个存储库,例如服务层