Web API 2 With Repository pattern
How to create Repository pattern in web API 2.
Overview of Repository Pattern
The repository pattern is intended to create an abstraction layer between the data access layer and the business logic layer of an application. It is a data access pattern that prompts a more loosely coupled approach to data access. We create the data access logic in a separate class, or set of classes called a repository with the responsibility of persisting the application's business model.
Using the Repository Pattern has many advantages:
1. Your business logic can be unit tested without data access logic.
2. The database access code can be reused
3. Your database access code is centrally managed so easy to implement any database
access policies, like caching
4. It’s easy to implement domain logics.
5. Your domain entities or business entities are strongly typed with annotations; and more.
Steps to create repository pattern in web API 2.
Here I am going to show a small example how to retrieve and insert data using webApi2.
In this project, I have created 3 separate folders.
Services, ViewModel, Repository.
Create View Model Classes
public class EmpViewModel
{
public int ID { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
}
Create Generic Interface.
public interface IGenericDetails
{
IEnumerable<EmpViewModel> GetAll();
IEnumerable<EmpViewModel> GetByID(int id);
bool Insert(EmpViewModel dt);
bool Update(EmpViewModel dt, int id);
bool Delete(EmpViewModel dt, int id);
}
Create API Controller
Create Repository
public class EmployeeDetails : IGenericDetails
{
ApiDBEntities db = new ApiDBEntities();
public IEnumerable<EmpViewModel> GetAll()
{
var items = db.Tbl_DetailsRepository.Select(i =>
new EmpViewModel { ID = i.ID, Name = i.Name, Address = i.Address,
Phone = i.Phone });
return items.ToList();
}
public IEnumerable<EmpViewModel> GetByID(int id)
{
var result = db.Tbl_DetailsRepository.Where(i => i.ID == id).Select(i =>
new EmpViewModel {ID = i.ID, Name = i.Name, Address = i.Address,
Phone = i.Phone});
return result.ToList();
}
public bool Insert(EmpViewModel dt)
{
Tbl_DetailsRepository dr = new Tbl_DetailsRepository();
dr.Name = dt.Name;
dr.Address = dt.Address;
dr.Phone = dt.Phone;
db.Tbl_DetailsRepository.Add(dr);
var Result = db.SaveChanges();
if (Result == 1)
{
return true;
}
else
{
return false;
}
}
Conclusion :-
reason to use the repository pattern is to allow the separation of your business logic and/or your UI from System.Data.Entity. There are numerous advantages to this, including real benefits in unit testing.
as we know every 2 years new ORM will be launch in the market. So if we use/follow this pattern it will be very easy to switch to any ORM by changing only the connection.