The repository and unit of work patterns are intended to create an abstraction layer between the data access layer
and the business logic layer of an application. Implementing these patterns can help insulate your application from
changes in the data store and can facilitate automated unit testing or test-driven development
1) Repository pattern is used as a default entity operation that allow the decoupling of the components used for presentation.
2) Repository pattern allows easy testing in the form of unit testing and mocking.
3) Repository pattern will have the proper infrastructure services to be used in the web