Помогите решить спор с преподавателем по поводу моделей в EF Core
Выполняю задание, нужно написать приложение с готовой БД на WPF с использованием EF Core. Когда я показывал преподавателю предварительную версию, у нас возник спор.
Такой сгенерировался для EF Core.
public partial class ProductDB
{
[Key]
public string ProductArticleNumber { get; set; } = null!;
public string ProductName { get; set; } = null!;
public string ProductDescription { get; set; } = null!;
public int ProductCategory { get; set; }
public string? ProductPhoto { get; set; }
public int ProductManufacturer { get; set; }
public decimal ProductCost { get; set; }
public sbyte? CurrentDiscount { get; set; }
public int ProductQuantityInStock { get; set; }
public int UnitOfMeasurement { get; set; }
public int Delivery { get; set; }
public int? ProductDiscountAmount { get; set; }
public virtual Delivery DeliveryNavigation { get; set; } = null!;
public virtual ICollection<Orderproduct> Orderproducts { get; } = new List<Orderproduct>();
public virtual ProductCategory ProductCategoryNavigation { get; set; } = null!;
public virtual Manufacturer ProductManufacturerNavigation { get; set; } = null!;
public virtual Unit UnitOfMeasurementNavigation { get; set; } = null!;
}
Так как мне нужно было добавить новые свойства, я создал новый класс
public class Product
{
public string? Article { get; set; }
public string? Title { get; set; }
public string? Description { get; set; }
public string? Manufacturer { get; set; }
public float? Price { get; set; }
public int? MaxQuantity { get; set; }
public float? CurrentDiscount { get; set; }
public string Image { get; set; }
public string ImageUrl
{
get
{
return Path.GetFullPath(@$"Resources\{Image}");
}
}
public float? NewPrice
{
get
{
if (CurrentDiscount != 0)
{
return Price - (Price * (CurrentDiscount / 100));
}
return 0;
}
}
public bool HaveDiscount
{
get
{
return NewPrice != null;
}
}
}
Препод сказал, что это излишнее дублирование кода. Я же считаю, что так правильнее, потому что один класс отвечает за связь с БД, а другой за работу внутри самой программы.
Буду рад если мне объяснят верное решение, и помогут решить спор.
Источник: Stack Overflow на русском