@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; }
    }


Это какая то необходимая специфика или можно вполне обойтись без этого в реальных проектах?
  • Вопрос задан
  • 130 просмотров
Решения вопроса 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
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Как по мне этот проект был сделан под монго дб, в остальных случаях значительно удобней хранить менее объемные ключи. У меня например есть byte, short, int, long, guid
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы