Обнуляемые типы и SQL
Например, у нас есть такая модель:
public class Trip : BaseEntity, ITrackChanges
{
public string UniqueHash { get; set; }
public string Description { get; set; }
public string InternalNumber { get; set; }
public DateTime ScheduledDateUtc { get; set; }
public DateTime LastDeliveryDateUtc { get; set; }
public decimal? CalculatedDistance { get; set; }
public decimal? FreightAmount { get; set; }
public decimal? SellAmount { get; set; }
public decimal? Amount { get; set; }
public decimal? Tolls { get; set; }
}
мы можем увидеть много десятичных обнуляемых свойств. Мое мнение, что это свойство может быть установлено, но не может быть установлено, и это действительно! Это означает, что Trip может быть без CalculatedDistance, например, это свойство может быть рассчитано и сохранено в будущем (или никогда). Я использую этот класс сущностей как первый класс кода для генерации SQL с помощью Entity Framework. И он будет создан как
[CalculatedDistance] [decimal](18, 2) NULL,
И, как мне кажется, это правильно. Затем мы можем выполнять любые действия с этим значением, суммой, другими расчетными действиями и т. Д.
Мой руководитель команды говорит, что мы НЕ ДОЛЖНЫ иметь вообще обнуляемые типы и хранить 0 вместо нуля. Но 0 - это значение, и если мы используем 0 (-1, -100, -100500 и т. Д.), Мы действительно используем магическое число! Мы должны помнить, что 0 не является значением, но означает, что это значение не установлено! У нас уже есть "не заданное значение", это NULL. Он утверждает, что сложно делать запросы SQL к сущностям с обнуляемыми типами. Но у меня никогда не было проблем с обнуляемыми типами.
Как это сделать правильно?