Repository pattern is one of the pattern which is most frequently used in Data access layer. This provides an abstraction to underlying database. This is also useful when database is not ready and we want to test the application by building an stub.
So repository pattern provides testability, abstration and dependency injection.
Repository is defined as "an abstraction that provides us with persistence ignorance and a separation of concerns where the responsibility of persisting domain objects is encapsulated by the Repository that leaving the domain objects to deal entirely with the domain model and domain logic."
I am going to show a sample of repository pattern implementation with c# and entity framework. Our entity framework DataContext object will be inside the constructor of the repository class. This will implement IDisposable interface to make sure that object is disposed properly in case of any failure or when object is no more required.
We will delcare some of the most frequenlty used operations in interface such as GetOne, GetMany, Filter, Save, Delete.
So IRepository and RepositoryImplementation Class will be the building blocks of repository pattern.More...