13Jun

Web API 2 With Repository pattern

Web API 2 With Repository pattern

How to create Repository pattern in web API 2.

Overview of Repository Pattern

RepositoryChartFlow

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.

Folders

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 GetAll();

        IEnumerable GetByID(int id);

        bool Insert(EmpViewModel dt);

        bool Update(EmpViewModel dt, int id);

        bool Delete(EmpViewModel dt, int id);

     }

Create API Controller

Controller1 

Controller2

 

Create Repository

    public class EmployeeDetails : IGenericDetails

    {

        ApiDBEntities db = new ApiDBEntities();

        public IEnumerable 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 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.

Related

Onsite Support Project on NAV 2013 R2 in Malaysia for the second consecutive year

At Kuala Lumpur, Malaysia, Canarys Dynamics team is providing technical support for Microsoft Dynami...

Read More >

How to Host your Webpages on Google Drive

If you want to host your webpages quickly but don't have any web sever to host, then google driv...

Read More >

Page Object Model

Automation Testing with Selenium using Page Object ModelPage Object Model (POM)Writing selenium scri...

Read More >

A Brief History of Time (spent in the ERP marketplace)

Confession: This blog is no way connected to book titled "A Brief History of Time", author...

Read More >

Dynamics 365 Business Central: How to Record Events in Business Central

When you are developing an extension for Dynamics 365 Business Central and you need to interact with...

Read More >

Canarys Automations Pvt Ltd recognized as finalist for 2017 Microsoft DevOps Partner of the Year Award

  Bengaluru, Karnataka, India — June 2, 2017 — Canarys Automations Pvt Ltd tod...

Read More >

Microsoft Dynamics NAV 2018 User Task

User Tasks is a one of the new feature added in Microsoft Dynamics NAV 2018.In this you can create t...

Read More >

Introduction to Load Testing

 Well, before learning what is Load testing. Let us discuss briefly the performance testing.&nb...

Read More >

Memory Management in iOS

Memory Management iOS In this blog we will walk through very important thing which all iOS developer...

Read More >

Share

Post a Comment

  • Recent
  • Popular
  • Tag
Monthly Archive
Subscribe
Name

Contact Us
  • *
  • *