Trong bài này, mình sẽ giới thiệu với các bạn 1 design pattern được sử dụng nhiều trong lập trình, đó là Repository design pattern cụ thể hơn là Repository Pattern trong ASP .NET và Entity Framework.

Repository pattern là gi?

  • Nó là lớp trung gian giữa tầng Business và tầng Data Access. Giúp cho sự truy cập dữ liệu chặt chẽ hơn, bảo mật hơn nhưng lại gọn gàng hơn.
  • Repository đóng vai trò là 1 lớp có nhiệm vụ kết nối tầng Business với Model của ứng dụng.
  • Thông thường thì các phần truy xuất, giao tiếp với database năm rải rác ở trong code, khi bạn muốn thực hiện một thao tác lên database thì phải tìm trong code cũng như tìm các thuộc tính trong bảng để xử lý. Điều này gây lãng phí thời gian và công sức rất nhiều.
  • Với Repository design pattern, thì việc thay đổi ở code sẽ không ảnh hưởng quá nhiều công sức chúng ra chỉnh sửa. Ví dụ, bình thường ta muốn lấy 1 customer ở db thì phải db.Customers.Where(c => c.Id == id), thì khi có sự thay đổi, tất cả các phần liên quan đến đoan code này cũng phải thay đổi.
  • Một số lý do chung ta nên sử dụng Repository Pattern:
    • Một nơi duy nhất để thay đổi quyền truy cập dữ liệu cũng như xử lý dữ liệu
    • Một nơi duy nhất chịu trách nhiệm cho việc mapping các bảng vào object.
    • Tăng tính bảo mật và rõ ràng cho code.
    • Rất dễ dàng để thay thế một Repository với một implementation giả cho việc testing, vì vậy bạn không cần chuẩn bị một cơ sở dữ liệu có sẵn…

Repository Pattern trong ASP.NET MVC

  • Tạo project web MVC: ta chọn New project àVisual C3 à Web àNET Web Application

  • Tạo 1 interface tên là IMaterialRepository:
 interface IMaterialRepository { bool Add(Material material); bool Update(Material material); bool Delete(int materialId); } 
  • Tạo class MaterialRepository, thừa kế từ IMaterialRepository này
  • Như vậy, ở trong controller, ta chỉ cần tạo mới repository này, và dùng các hàm được định nghĩa trong interface IMaterialRepository
 public class HomeController : Controller { IMaterialRepository materialRep = null; public HomeController() { materialRep = new MaterialRepository(); } ……… 
  • Khi bạn muốn truy cập db thì chỉ cần khai báo thêm ở trong interface và implement nó. Như vậy code chúng ta sẽ rõ ràng và tiết kiệm hơn rất nhiều.

Post Views: 908

Share this:

Related

ĐỂ LẠI PHẢN HỒI CỦA BẠN TẠI ĐÂY

Phản hồi về bài viết này

NO COMMENTS

LEAVE A REPLY


*