Ответ 1
У меня возникла такая же проблема, когда в методе была указана переменная с тем же именем. В этом случае отладчик только "заметит" первую переменную. Это не влияет на фактическое выполнение кода.
Я застрял, почему это происходит? Код буквально говорит, что entity!= Null, но отладчик считает его нулевым. Что происходит?
Я уже перешел на x86, перекомпилировал, очистил, даже перезапустил компьютер. И код всегда был таким, нет версии, где оператор if был другим. И если я продолжу, я не получу исключение нулевого указателя.
У меня возникла такая же проблема, когда в методе была указана переменная с тем же именем. В этом случае отладчик только "заметит" первую переменную. Это не влияет на фактическое выполнение кода.
Я не уверен, но я думаю, что это эффект цикла foreach
в сочетании с функцией ChangeTracker.Entries()
.
Функция foreach представляет собой сбор данных по запросу.
Таким образом, он не получает все данные из ChangeTracker.Entries()
и после этого начинает цикл с каждым значением.
Это больше получает первое значение из функции → выполнение значения → получение второго значения → ...
Итак, значение равно null, потому что вы еще не использовали объект.
Измените ChangeTracker.Entries()
на ChangeTracker.Entries().ToList()
, и я думаю, вы увидите изменения.
Взгляните на команду yield
для более глубокого понимания того, как работает функция итератора. (Логика немного запутанная:))