Можем ли мы иметь статический метод для установки объекта БД в объект VIewModel в приложении C# asp.net mvc
Я использую Asp.Net MVC,C#,EF 6 CodeFirst в моем проекте. В некоторых представлениях мне нужно отображать свойства более чем одного объекта, для этого я создал ViewModel. Теперь, чтобы сопоставить ViewModel с Model(объект базы данных) вместо использования AutoMapper (Object Mapper's), я пытаюсь реализовать свой собственный путь. В классе ViewModel я создал статический метод с именем GetViewModel() и сопоставление объектов из модели для просмотра модели. Могу ли я использовать так. Это хорошо для производительности или это создаст какую-либо проблему. Так как это веб-приложение.
public class CustomerViewModel
{
public int CustomerId { get; set; }
public string CustomerName { get; set; }
public string Locations{ get; set; }
public static CustomerViewModel GetCustomerWithFullAddress(Customer customer)
{
try
{
CustomerViewModel viewModel = new CustomerViewModel();
viewModel.CustomerId = customer.CustomerId;
viewModel.CustomerName = customer.CustomerName;
foreach(Address address in customer.Addresses){
viewModel.Locations = viewModel.Locations +"," + address.Country;
}
return viewModel;
}
catch (Exception ex)
{
throw ex;
}
}
}
Тогда в контроллере я могу получить доступ, как это.
Customer customer= db.Customer.Where(x => x.CustomerId == 1).FirstOrDefault();
CustomerViewModel response = CustomerViewModel.GetViewModel(customer);
2 ответа
AutoMapper не медленный, предполагая, что определение отображений находится в конструкторе, что происходит один раз при вызове класса, когда он инициализируется. Вы можете попробовать добавить секундомер, который регистрирует время для отслеживания, чтобы действительно определить, является ли он "слишком медленным".
Это очень хороший способ сопоставить вашу модель с моделью представления. Так что давай и использовать его.