@VanilaSpirit

ASP.NET Нужна ли базовая модель для всех моделей?

В одном из проектов нашел такую конструкцию:
Есть базовая модель, содержащая лишь ключ(Id). От неё наследуются все остальные модели
public class BaseModel
    {
        [Key]
        public Guid Id { get; set; }
    }


Пример с BaseModel:
public class Player : BaseModel
    {
        [Required]
        [Display(Name = "Имя")]
        public string Name { get; set; }

        [Required]
        [Display(Name = "Фамилия")]
        public string Surname { get; set; }
    }


Это какая то необходимая специфика или можно вполне обойтись без этого в реальных проектах?
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
Planet_93
@Planet_93
Это вполне нормальная практика. Главное определить будут ли в системе модели с набором общих полей.

Например, есть базы, где данные не удаляют, а записи ставят признак Deleted. Добавление и редактирование каждой записи фиксируются. То в таких случаях есть смысл вынести общие поля в базовый класс и его уже наследовать.

/// <summary>
	/// Базовый класс для всех классов модели приложения
	/// </summary>
	public abstract class BaseEntity
    {
        /// <inheritdoc />
        /// <summary>
        /// Идентификатор
        /// </summary>
        [Key]
        public virtual long Id { get; set; }
        /// <inheritdoc />
        /// <summary>
        /// Дата занесения записи
        /// </summary>
        public DateTime CreatedOn { get; set; } = DateTime.Now;
        /// <summary>
        /// Дата модификации записи
        /// </summary>
        public DateTime UpdatedOn { get; set; } = DateTime.Now;
        /// <inheritdoc />
        /// <summary>
        /// Активен
        /// </summary>
        [DefaultValue(true)]
        public bool Active { get; set; } = true;
        /// <inheritdoc />
        /// <summary>
        /// Удален
        /// </summary>
        [DefaultValue(false)]
        public bool Deleted { get; set; }
    }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon Куратор тега C#
Senior .NET developer
Как по мне этот проект был сделан под монго дб, в остальных случаях значительно удобней хранить менее объемные ключи. У меня например есть byte, short, int, long, guid
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Deltasoft Казань
от 60 000 до 100 000 ₽
IQSoft Новосибирск
от 130 000 ₽
BRIO MRS Казань
от 70 000 до 120 000 ₽
09 авг. 2020, в 17:19
5000 руб./за проект
09 авг. 2020, в 17:11
15000 руб./за проект