Tôi sử dụng Automapper hoặc ánh xạ theo cách thủ công, không đóng vai trò nào.Tôi vẫn còn do dự khi sử dụng ViewModels thay vì Mô hình cho Chế độ xem
Tất cả dữ liệu cho ReleaseViewModel phải là lần đầu tiên trong Bản phát hành vì nó được điền vào lớp truy cập dữ liệu với nó. 90% mô hình của tôi là như thế này. Tại sao phí tổn sao chép tất cả mọi thứ?
Còn nguyên tắc và kỹ thuật quá mức của KISS thì sao?
Tất nhiên mọi công cụ cho nhiệm vụ thích hợp của nó, nhưng rất thường xuyên tôi đọc trên SO mà không sử dụng ViewModels trong asp.net mvc là một NO-GO.
Nơi vẽ đường kẻ? Tôi có nên sử dụng ViewModels khi họ phân biệt với 50%, 75% hoặc 99% từ các mô hình của tôi không?
Tôi có một mô hình phát hành:
public class Release
{
public int Id { get; set; }
public string Name { get; set; }
public string Author { get; set; }
public DateTime CreatedAt { get; set; }
public int FailedTestsCount { get; set; }
public int SucceededTestsCount { get; set; }
public int SumTestsCount
{
get
{
return SucceededTestsCount + FailedTestsCount;
}
}
public int SumTestingTime { get; set; }
}
một ReleaseViewModel viewmodel:
public class ReleaseViewModel
{
[HiddenInput(DisplayValue = false)]
public int Id { get; set; }
[Required(ErrorMessage = "Name must not be empty.")]
[StringLength(30, ErrorMessage = "Enter max. 30 chars for a name.")]
[Remote("ReleaseExists", "Release", ErrorMessage = "This name already exists.")]
public string Name { get; set; }
public string Author { get; set; }
public DateTime CreatedAt { get; set; }
public int FailedTestsCount { get; set; }
public int SucceededTestsCount { get; set; }
public int SumTestsCount
{
get
{
return SucceededTestsCount + FailedTestsCount;
}
}
public int SumTestingTime { get; set; }
}
Lớp phát hành của bạn có phải là DTO hay là đối tượng miền có chức năng? – Jupaol
đối tượng miền của nó. Tôi không có nhiều lớp để có nhu cầu cho một dto. – Pascal
Tại sao bạn không muốn Tên được yêu cầu và ít hơn 30 char trong mô hình miền của bạn? Mặc dù mô hình miền của bạn không thể hiển thị thông điệp đẹp cho người dùng, nhưng nó vẫn có thể từ chối xử lý nếu ModelState.IsValid là sai. Ít nhất đó là cách tôi nghĩ bạn nên làm điều đó, nhưng tôi là một newbie –