I'm using the generic repository and unit of work pattern for my mvc4 website.

Now I have the situation, that I want to delete a user of my system.
In the delete code I must delete some more entries in other tables (comments, accessrights, ..).

The simplest solution is to create a `UserRepository` which inherits from `GenericRepository<User>` and modify the delete method to delete the data in other tables. But that means my `UserRepository` would access to other tables, which should have their own repository classes, right?

I've read about a service layer, which is between my business logic and my repositories.

What is the best practise here and how looks a implementation of the service layer?

And is there still any requirement for have custom implemented repositores like `UserRepository` if I use a service layer or should I only have generic repositories and do my logic in the service class?

Example code:

```
class UserRepository
{
    public void Delete(User entity)
    {
        var userComments = Context.UserComments.Get(comment => comment.UserId == entity.Id);

        foreach (var comment in userComments)
        {
            Context.UserComments.Remove(comment);
        }

        //
        // same for access rights here
        //

        Context.Users.Remove(entity);
    }
}

```