2015-02-18 33 views
6

Tôi có một lớp Dữ liệu chứa lưu trữ, kho lưu trữ và Tự động chỉnh sửa EF6 DbFirst của tôi.Khi nào tôi nên sử dụng AutoMapper và khi không

Tôi cũng có một lớp Mô hình với Poco cho mỗi thực thể được tạo tự động trong lớp Dữ liệu của tôi. Các thuộc tính khá khớp chính xác trừ một vài thay đổi tên.

AutoMapper chỉ được cài đặt cho DataLayer của tôi và đây là nơi tôi đặt tất cả ánh xạ của tôi trong tệp cấu hình. Tại thời điểm này tôi có một ánh xạ từ mỗi thực thể DataLayer cho mỗi thực thể ModelLayer và mỗi thực thể ModelLayer cho mỗi thực thể DataLayer. Bất kỳ thay đổi tên nào được chỉ định trong ánh xạ.

Vì nó được thiết lập theo cách này trong kho lưu trữ các phương thức mà hàm nhận trong đối tượng từ ModelLayer nhưng sau đó được ánh xạ tới đối tượng DataLayer để tôi có thể gửi nó tới DbContext. Khi kéo thông tin trong kho của tôi, tôi sử dụng DbContext để lấy và sau đó là chức năng AutoMapper để ánh xạ tới Model để chức năng có thể trở lại như Model.entity.

Lớp doanh nghiệp và ứng dụng web của tôi chỉ sử dụng các thực thể mô hình. Nếu có bất cứ điều gì có vẻ sai về điều này xin vui lòng cho tôi biết.

Điều khác là ánh xạ từ ModelLayer đến ViewModel và ngược lại trong khi thực hiện thao tác GET và POST trong bộ điều khiển của tôi. Việc lập bản đồ cả hai cách ở đây có bình thường không? Tôi có cần phải cài đặt AutoMapper vào ứng dụng web của mình tại thời điểm này không?

+0

"Khi nào tôi nên sử dụng AutoMapper và khi không" <- nó làm cho các loại vô nghĩa, vì vậy câu trả lời là "không bao giờ". –

+2

@MauricioScheffer: Tôi không đồng ý, hoàn toàn có thể chấp nhận được ánh xạ từ mô hình nội bộ tới mô hình xem (bên ngoài) hoặc từ mô hình xác thực đến mô hình nội bộ (vào trong). –

+0

Vì vậy, tôi lấy nó rằng không có sai hoặc phải. Nếu bạn cần phải đi từ một đối tượng tương tự đến một đối tượng tương tự khác và không muốn đặt các thuộc tính theo cách thủ công mỗi khi bạn sử dụng AutoMapper. – JTunney

Trả lời

14

Tôi sử dụng AutoMapper khi tôi muốn loại bỏ mã phía bên tay trái bên trái nhàm chán. Nếu logic không hoàn toàn rõ ràng để sao chép dữ liệu, tôi hoàn nguyên về ánh xạ thủ công.

Những ngày này có nghĩa là tôi sử dụng LINQ dự đoán từ AutoMapper trên tất cả GET và ít tốn kém trên POST.

Các vấn đề liên quan