Ваш продукт и категория продукта являются моделями домена, а не моделями просмотра. Google viewmodels и модели доменов, чтобы лучше понять, чем они отличаются.
На вашем месте я бы создал модель представления с именем ProductInfoViewModel. Этот класс будет содержать только ту информацию, которую вы будете отображать о продукте.
public class ProductInfoViewModel
{
public string Name { get; set; }
public string Category { get; set; }
}
Теперь у вас есть простой класс, который будет использоваться для отображения некоторых данных.
Да, вы все еще хотите вызвать свой репозиторий или сервисный уровень для получения данных о продукте:
var productDomainModel = productDB.Products.Where(n => n.ProdId == prodId)
.Select(m => m.hasCategory.ProductCategoryName).First();
Теперь, вместо того, чтобы передавать productDomainModel в ваше представление, вы можете создать модель представления продукта, которая будет легче, поскольку будет содержать только те свойства, которые вы хотите отобразить:
var productViewModel = new ProductViewModel
{
Name = productDomainModel .Name,
Category = productDomainModel .Category
}
Теперь вы можете передать эту модель представления вашему представлению:
return View(productViewModel);
Ваше представление теперь знает о модели представления, но оно ничего не знает о вашей модели предметной области, что является хорошей вещью и способствует разделению проблем.
Еще одна вещь, когда мы создаем модель представления продукта из модели предметной области продукта, мы пишем «шаблонный» код, такой как Name = product.Name.
Теперь изображение у вас есть 20 свойств, и вы можете отобразить модель домена, чтобы просмотреть модель несколько раз. Это очень утомительная работа, и вы можете избежать ее, прибегая к помощи инструментов, таких как Automapper.
Удачи