我们有一个用ASP.NET和C#编写的应用程序。该应用程序的用户可以更改其密码。还有我们的问题:
当用户更改密码时,新密码会发送到服务器,我们会使用EntityFramework将新密码保存在代码中:
var entry = this.dataContext.Entry(entity);
entry.State = EntityState.Modified;
this.dataContext.SaveChanges();
无论如何,当用户现在尝试使用新密码登录时,他失败了。相反,他仍然可以使用旧密码登录。
我们知道DatabaseContext中仍然包含旧数据,但我们不知道为什么,以及在保存编辑后的数据后我们如何强制加载新数据。在数据库上,新密码将被保存。
如果有帮助,则将LazyLoadingEnabled设置为false。
任何人都可以帮助我们吗?
答案 0 :(得分:0)
所以,我们解决了这个问题。
基本上问题是在应用程序启动时,我们打开了一个DbContext(1),每次有人登录时,应用程序都会从同一个DbContext(1)中获取用户数据。当用户更改其密码时,应用程序将打开另一个DbContext(2)并进行更改。只要您想再次登录,应用程序就会从旧的DbContext(1)中获取数据。由于DbContext永远不会在Web应用程序的整个运行时中重新创建,因此用户数据也永远不会在上下文中更新。
我希望如果有人遇到同样的问题,这个答案会有所帮助。