Let's now start implementing the actual data access layer for our application. The first thing we need to do is to create a class library and copy all the model classes and context classes into the class library project. The following screenshot shows how this can be done:
To implement an extensible data access layer, we will use the Repository and Unit of Work patterns.
The Repository pattern is particularly useful when we have separate data models and domain models. Repository can act as a mediator between the data model and the domain model. Internally, it can talk to the database in terms of data models and will return the domain model to the application layers above it.
Since we are using data models as domain models in our application, we will be returning the same model. In case we want to use separate data models and domain models, we just need to map...