В моем случае использования мне нужно обязательное логическое свойство, например:
public class Todo
{
[Required]
public bool IsDone {get; set; }
}
В моем проекте Entity Framework произошла ошибка из-за отсутствия сопоставления свойства (значение не было установлено) логического значенияимущество.В результате я всегда сохранял логическое значение по умолчанию «ложь», хотя оно на самом деле не заполнено. Когда оно не заполнено, я ожидаю выдать исключение проверки, но поскольку это примитивный тип, атрибут проверки не имеет смысла, так как он всегда имеет значение по умолчаниючто достаточно, чтобы пройти.Я не хочу иметь значение по умолчанию, и атрибут validation должен выдавать исключение, когда значение не установлено.
Решение, которое я придумала, состоит в том, чтобы использовать обнуляемые логические значения с обязательным атрибутом.Если свойство не задано, обязательный атрибут выдаст исключение, что здорово.С другой стороны, довольно странно иметь обязательный логический тип, допускающий значение NULL, потому что вы знаете, что он всегда заполнен (из-за обязательного атрибута) и делает бизнес-логику этого свойства менее читаемой (IsDone.HasValue? IsDone.Value: false; / Не должно быть возможно, потому что это требуется /).
Возможны ли другие решения?