In my projects I usually access all my data through a repository. The utilization of the repository pattern provides a number of benefits for your code:
- Reduces duplicate data access code.
- Data access code can be isolated/faked for Unit Testing.
- Allows you to swap other ORMs, databases or data access code without affecting other parts of the system.
The only draw back to using a repository pattern is that it can be cumbersome to implement (especially if you have a lot of models), to help with that I’ve created a NuGet package which will generate Repository and Unit of Work classes with basic Get, Get All, Delete, Update code implemented in an abstract Generic Repository (so they can be freely overridden).
The NuGet package is available here:
The NuGet package will add a RepositoryGenerator.tt which will generate the following classes:
Repository.cs: An abstract class with basic implementation of Get, GetAll, Delete and Update
IRepository.cs: An interface for the abstract class
UnitOfWork: A unit of work class for committing all changes at once.
IUnitOfWork: The interface for the unit of work.
In addition to these classes, a repository and interface will be generated for each one of your entities allowing you to extend beyond the basic functionality provided by the generic repository.
With the Repository Generator NuGet package you should be up and running with a repository within a just few seconds!