我正在做练习,其中一部分需要我做一个将用户角色从User
更改为subbed user
的按钮。我正在使用的表是Roles (Id, Title)
和Users (Id, name, etc, )
,它们通过多对多关系连接,因此我尝试使用u.Roles.FirstOrDefault().Title
行按用户访问属性标题,如下所示:
public void ChangeRoleFromUserToSubscribedUser(User u)
{
u.Roles.FirstOrDefault().Title = "Subscribed User";
Entity.SaveChanges();
}
以及获取用户的then方法:
public ActionResult Change(string email)
{
UsersRepository ur = new UsersRepository();
var user = ur.GetUser().SingleOrDefault(x => x.Email == email);
ur.ChangeRoleFromUserToSubscribedUser(user);
return RedirectToAction("List");
}
现在,我尝试更改某个用户的名称(我们称他为bob),但是它起作用了,但是,当我使用上面的代码时,当我按下按钮时,Bob的角色不会从User
更改到Subscribed user
。而是将表Roles
中的标题从User
更改为Subscribed User
。
我在做什么错了?
您可以尝试这种方式
public void ChangeRoleFromUserToSubscribedUser(User u)
{
var role = u.Roles.FirstOrDefault();
role.Title = "Subscribed User";
Entity.Entry(role).State = EntityState.Modified;
Entity.SaveChanges();
}