Asked Jun 30th, 2021 10:17 a.m. 94 1 1
  • 94 1 1
+1

Làm cách nào để tạo 1 class mapper chung cho toàn bộ model

Share
  • 94 1 1

Chào mọi người. Mình đang nghiên cứu về mapper cho Entity framework .Net. Mình có tham khảo ở bài viết này https://viblo.asia/p/su-dung-automapper-de-anh-xa-mot-object-toi-mot-object-khac-trong-aspnet-core-ORNZqx2rK0n . Nhưng mình thắc mắc là có thể làm 1 class mapper như trên bài viết. Nhưng nó có thể mapper được tất cả object mà mình cần khi gọi không. Như bài viết là mapper user và user view. Bây giờ cũng class Mapper cha đó, mình muốn thêm hàm kiểu mapper deparment hay product chẳng hạn thì có được không. Có bạn nào có giải pháp cho vấn đề của mình không nhỉ 😄

Avatar Thành Nguyễn @nguyentamthanh
Jun 30th, 2021 10:20 a.m.

Mình có thử test qua thì thấy nó mapper được user lấy lên từ db với user view. Nhưng ở class Mapper cha mình không thấy nơi nào gọi đến cả. Mình không muốn tạo quá nhiều file cs mapper cho từng model nên bạn nào có solution giúp mình vs 😄 tks

0
| Reply
Share
Avatar Dương Bằng Huân @duonghuan2122000
Jun 30th, 2021 10:36 a.m.

Ý kiến cá nhân của mình: Mapper sinh ra có 2 mục đích chính:

  • Giới hạn các trường trả về của dữ liệu: (không xét đến vấn đề select các trường trên db) Ví dụ entity bạn có 10 trường nhưng bạn chỉ cần dùng 5 trường thì class mapper sẽ chỉ có 5 trường đó thôi
  • Validate dữ liệu: Hiểu một cách đơn giản là ngoài class mapper để trả về dữ liệu trên, mình sẽ tạo thêm một class mapper nữa để validate dữ liệu và class này dùng cho tham số đầu vào của các hàm insert và update dữ liệu gồm các trường mà mình không cần truyền (như trường Id)

Vì vậy, mình thấy bạn muốn tạo ra một mapper dùng chung cho tất cả các entity sẽ rất khó. Giả sử có tạo được thì nó cũng mất đi ý nghĩa ban đầu của nó

0
| Reply
Share

1 ANSWERS


Answered Jul 2nd, 2021 5:39 a.m.
0

Mình nghĩ mỗi cặp DTO và Entity nên có một mapper riêng.

Share
Viblo
Let's register a Viblo Account to get more interesting posts.