Onion architecture with Generic Unit of Work and Repositories