【发布时间】:2016-01-16 17:32:19
【问题描述】:
我在管理区域(部分)中有一个控制器名称 UserController。我可以在其中将角色管理员 (A) 分配给用户 (U) 或将用户 (U) 分配给管理员 (A)。
当我更改任何用户的角色时,它也在数据库中成功更新,但是当我从应用程序登录时,我已经更改了角色的用户,因此用户包含其旧角色。我已经将断点也放入了变量“角色” ' 正在返回以前的角色。我很惊讶“角色”变量如何返回其旧角色。
public override string[] GetRolesForUser(string username)
{
string[] role = { obj.GetAll().Where(x => x.EmailAddress == username).FirstOrDefault().Role };
return role;
}
此代码中的用户控制器 AssignRole 操作我正在更新角色
public ActionResult AssignRole(int id, string role)
{
try
{
BOL.tbl_Login user = (BOL.tbl_Login)obj.login.GetById(id);
if (role == "A")
{
user.Role = "U";
}
else if (role == "U")
{
user.Role = "A";
}
else
{
user.Role = "U";
}
obj.login.Update(user);
TempData["Msg"] = "Operation Successfully!";
}
catch (Exception ex)
{
TempData["Msg"] = "Error " + ex.Message;
}
return RedirectToAction("_Index");
}
我也在用
[Authorize(Roles = "A")]
我认为 Entity Framework 没有返回最新数据。
这是数据访问层代码
public override void Update(T data)
{
obj.Entry(data).State = EntityState.Modified;
obj.Configuration.ValidateOnSaveEnabled = false;
Save();
obj.Configuration.ValidateOnSaveEnabled = true;
}
【问题讨论】:
标签: asp.net-mvc entity-framework-6