Trong ứng dụng ASP.NET MVC của tôi, tôi có một trang chỉnh sửa khá phức tạp kết hợp một số mô hình thành một chế độ xem.ASP.NET MVC - Tôi có nên sử dụng Pattern Repository để viết ViewModels vào cơ sở dữ liệu hay chuyển đổi chúng thành Models trước không?
Tôi đang sử dụng mẫu ViewModel để kết hợp tất cả thông tin này và hiển thị một đối tượng cố kết với Chế độ xem.
Như một ví dụ, cấu trúc ViewModel của tôi là một cái gì đó như thế này:
CompanyId
CompanyName
List<Employee> Employees
List<ContactMethod> ContactMethods
Đối tượng người lao động có một số đặc tính cơ bản, và một phương pháp tiếp xúc ưa thích.
Trên trang chỉnh sửa, người dùng được cung cấp tất cả nhân viên của công ty và họ có khả năng thêm và xóa (sử dụng javascript), cũng như chỉnh sửa chi tiết nhân viên. Danh sách ContactMethods được sử dụng để điền vào danh sách thả xuống cho mỗi nhân viên.
Tôi đã dịch thành công Mô hình của mình (đọc từ cơ sở dữ liệu) sang ViewModel này và ngược lại, vì vậy sau khi chỉnh sửa, tôi đã để lại ViewModel đại diện cho trạng thái hiện tại của nhân viên của công ty đó.
Tôi đang sử dụng mẫu Kho lưu trữ để liên lạc với cơ sở dữ liệu, vì vậy câu hỏi của tôi là, tôi nên gọi trực tiếp vào CompanyRepository, chuyển ViewModel hoặc tôi nên chuyển ViewModel trở lại thành đối tượng Mô hình trước khi sử dụng Kho lưu trữ để viết chúng vào cơ sở dữ liệu?
Tóm lại, Repository có biết về các đối tượng ViewModel của tôi không?
Nếu đó là trường hợp (và điều này là tốt), tôi cần phải tạo ra các mô hình nhân viên, xóa tất cả nhân viên hiện có từ công ty đó, sau đó thêm mô hình nhân viên mới ... hoặc ... Lấy tất cả các mô hình nhân viên từ cơ sở dữ liệu và so khớp chúng trước khi thêm, xóa và chỉnh sửa nếu thích hợp. Điều đó có đúng không? – Damovisa
@Damovisa: bạn có thể làm điều đó. Thay vào đó, tôi sẽ duy trì thông tin đó trong quá trình chỉnh sửa. Trong ViewModel của bạn duy trì ba danh sách: CreatedEmployees, EditedEmployees, DeletedEmployees. – manu08
@ manu80 - Tôi thấy cách đó có thể hoạt động, nhưng nó có thể hơi phức tạp một chút. Giao diện người dùng sẽ phải thay đổi khá nhiều để tính toán cho ba bộ sưu tập này - ngay cả khi nó chỉ thay đổi javascript. – Damovisa