Как установить null в свойство GUID
У меня есть объект типа Employee, который имеет свойство Guid. Я знаю, что если я хочу установить значение null, я должен определить свое свойство типа как nullable Nullable<Guid>
prop или Guid? прислонить.
но в моем случае я не могу изменить тип prop, поэтому он останется как тип Guid, а мой коллега и я не хотим использовать Guid.Пустой.
есть ли способ установить мое свойство как null или string.empty для восстановления поля в базе данных как ноль.
У меня есть механизм для преобразования из String.пустой для null, но я изменю многие вещи, если изменится, чтобы принять пустой guid в null.
любая помощь, пожалуйста!
6 ответов
есть ли способ установить мое свойство как null или string.пусто, чтобы восстановить поле в базе данных как null.
нет. Потому что это не аннулируется. Если вы хотите, чтобы он был nullable, вы должны использовать Nullable<Guid>
- если бы вы этого не сделали, не было бы никакого смысла иметь Nullable<T>
для начала. У тебя есть фундаментальной проблема здесь - что вы действительно знаете, учитывая ваш первый абзац. Вы сказали: "я знаю, если я хочу достичь а, я должен сделать Б - но я хочу достичь а, не делая Б. " Это невозможно по определению.
самое близкое, что вы можете получить, это использовать один конкретный GUID, чтобы стоять для нулевого значения -Guid.Empty
очевидный кандидат, но ты отверг без указания причин.
выберите свой яд-если вы не можете изменить тип свойства, чтобы быть nullable, то вам придется использовать "волшебное" значение для представления NULL. Guid.Empty
кажется таким же хорошим, как и любой, если у вас нет какой-то конкретной причины не использовать его. Второй вариант был бы Guid.Parse("ffffffff-ffff-ffff-ffff-ffffffffffff")
но это намного уродливее ИМХО.
вы можете использовать typeof на(идентификатор GUID), "00000000-0000-0000-0000-000000000000" для DefaultValue имущества.
вы можете сделать переменную guid, чтобы сначала принять null ? оператор затем вы используете Guid.Пустой или typecast его в null с помощью (Guid?) null;
например: Идентификатор GUID? идентификатор = идентификатор GUID.Пустой; или Идентификатор GUID? id = (Guid?) null;