2015-07-08 2 views
0

У нас есть приложение, запрограммированное с ASP.NET и C#. В приложении есть пользователи, которые могут изменять свои пароли. И наша проблема:Веб-приложение, запущенное на базе данных базы данных IIS

Когда пользователь изменяет пароль, новый пароль отправляется на сервер, и мы сохранить новый пароль в коде с помощью EntityFramework:

var entry = this.dataContext.Entry(entity); 
entry.State = EntityState.Modified; 
this.dataContext.SaveChanges(); 

Во всяком случае, когда пользователь в настоящее время пытается войти в систему с новым паролем, он терпит неудачу. Вместо этого он все еще может войти в систему со старым паролем.

Мы знаем, что в DatabaseContext все еще есть старые данные, но мы не знаем, почему и как мы можем обеспечить его загрузку новых данных после сохранения отредактированных данных. В базе данных новый пароль будет сохранен.

LazyLoadingEnabled имеет значение false, если это помогает.

Может нам помочь?

+0

Какой код вы используете, чтобы получить его? Вы гарантировали, что пароль физически изменяется в БД? – TestWell

+0

Да, я уверен, что пароль будет изменен. Новый пароль находится в базе данных, как только я вызываю SaveChanges(); – VAL

+0

Вы используете статический контекст db? Поиск в БД проверяет граф объекта перед тем, как перейти к db. Возможно, у вас есть старый граф, с которым вы проверяете. – Shoe

ответ

0

Итак, мы решили проблему.

В основном проблема заключалась в том, что при запуске приложения мы открыли DbContext (1), и каждый раз, когда кто-то входил в систему, приложение принимало данные пользователя из одного и того же DbContext (1). Когда пользователь меняет свой пароль, приложение открывает другой DbContext (2) и меняет его. Как только вы хотите снова войти в систему, приложение взяло данные из старого DbContext (1). Поскольку DbContext никогда не воссоздается во всей среде выполнения веб-приложения, пользовательские данные также не обновляются в контексте.

Надеюсь, этот ответ поможет, если кто-то столкнется с одной и той же проблемой.

Смежные вопросы