Сравнение с логическими значениями дает false, когда они имеют одинаковое значение - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь реализовать таблицу аудита с использованием Entity Framework core 2.0. Однако сохраняются все поля, а не только отредактированные. Я думал, что мог бы сделать простое заявление if Если старое значение не равно новому значению, это измененное значение.

Однако, это не работает для логических значений. Два истинных булевых значения не равны.

Вот мой очень простой код:

                        if (property.OriginalValue != property.CurrentValue)
                        { 
                            auditEntry.OldValues[propertyName] = property.OriginalValue;
                            auditEntry.NewValues[propertyName] = property.CurrentValue;
                        }

enter image description here

Надеемся, вы можете видеть на изображении, что оба значения OldValues и NewValues верны, но в случае с выражением if это не так. Мне бы хотелось, чтобы оператор if сравнивал строки, целые, логические значения и т. Д., Если это возможно.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Исправлено с помощью этой строки:

if (((property.OriginalValue != null) ? property.OriginalValue.ToString() : "" ) != ((property.CurrentValue != null) ? property.CurrentValue.ToString() : ""))
0 голосов
/ 02 июля 2018

Имеет отношение к тому, что property.OriginalValue и property.CurrentValue представляют собой 2 объекта. Поскольку 2 не ссылаются на один и тот же объект, они никогда не равны. Попробуйте сравнить, используя .ToString () или что-то вроде: property.IsModified

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...