Generic Repository Pattern là gì ? Cách sử dụng trong ASP.NET Core

Bài viết dưới đây sẽ nói về Generic Repository Pattern, một mẫu lý tưởng giúp bạn tối ưu nhiều vấn đề trong đó có các đoạn mã của bạn và sau đó sẽ hướng dẫn các bạn sử dụng Generic Repository Pattern trong ASP.NET Core.

I. Generic Repository Pattern là gì ?

1. Định nghĩa Generic Repository Pattern

Nếu như bạn có một dự án và bạn nhận thấy mỗi repository đều thực hiện những hành động tương tự hoặc gần tương tự nhau, nếu bạn tạo liên tiếp nhiều repository gần giống nhau đó sẽ là một sự lãng phí lớn. Thay vào đó. bạn chỉ cần tạo một và chỉ một repository cho việc thao tác với toàn bộ các class entity là đủ. Và đó chính là Generic Repository Pattern.

2. Lợi ích khi sử dụng Generic Repositoty Pattern

  • Giảm thiểu được sự trùng lập các đoạn code của bạn
  • Đảm bảo các coder dùng chung một mẫu
  • Dễ dàng cho việc bảo trì và kiểm thử
  • Giảm thiểu các lỗi có thể xảy ra

II. Làm thế nào để sử dụng Generic Repository Pattern trong ASP.NET Core

Ở đâ sẽ có một ví dụ đơn giản về một phòng ban. Mình sẽ sử dụng Dependency Injection framework và Entity Framework Core để hướng dẫn các bạn. Bây giờ tiến hành làm thôi:

1. Tạo model cần thiết

Tạo một class gọi là “BaseEntity” để tất cả các class khác có thể kế thừa các thuộc tính của nó:

Bây giờ ta tạo một class “PhongBan” chỉ đơn giản gồm 2 thuộc tính là mã phòng ban và tên phòng ban

2. Tạo Generic Repository

Bây giờ tiến hành tạo một interface có tên là IGenericRepository. Interface này sẽ có các phương thức Get, GetAll, Add, Update và Delete

Và tiến hành hiện thực nó thôi:

3. Sử dụng Generic Repository

Bây giờ tiến hành tạo một controller có tên là PhongBansController có nội dung như sau:

Các view của controller này các bạn tự tạo nhé.

III. Kết luận

Vì đây là ví dụ đơn giản, mục tiêu của mình là hướng dẫn các bạn cài đặt Generic Repository mà thôi, nên có thể bạn sẽ không hiểu hết được khả năng của nó, vì nếu dùng một ví dụ đầy đủ hơn sẽ rất là nhiều vì thế bạn hãy tự tìm hiểu thêm nhé.

Nhận xét