Как установить 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 очевидный кандидат, но ты отверг без указания причин.


Guid? myGuidVar = (Guid?)null;

Это может быть. Ненужное литье не требуется.

Guid? myGuidVar = null;

выберите свой яд-если вы не можете изменить тип свойства, чтобы быть nullable, то вам придется использовать "волшебное" значение для представления NULL. Guid.Empty кажется таким же хорошим, как и любой, если у вас нет какой-то конкретной причины не использовать его. Второй вариант был бы Guid.Parse("ffffffff-ffff-ffff-ffff-ffffffffffff") но это намного уродливее ИМХО.


поскольку " Guid "не является нулевым, используйте" Guid.Пусто " в качестве значения по умолчанию.


вы можете использовать typeof на(идентификатор GUID), "00000000-0000-0000-0000-000000000000" для DefaultValue имущества.


вы можете сделать переменную guid, чтобы сначала принять null ? оператор затем вы используете Guid.Пустой или typecast его в null с помощью (Guid?) null;

например: Идентификатор GUID? идентификатор = идентификатор GUID.Пустой; или Идентификатор GUID? id = (Guid?) null;