Lets say I have an entity called User which has many Posts. My service looks like this for the deletion of a post:

void DeletePost(int postId, int userId);

Where does my validation code go? (ensure that the user has permission to delete). Should I do this in the repository with 1 database call? Or should I do this check in the Service layer where I make 2 calls:

  1. Get the user by userId.
  2. Call delete after validation has been done on the user.

I will have 2 repositories, 1 for the user and 1 for the post, each looking like this:

// 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);
Edit
Report