asp.net-访问多对多关系属性

问题描述 投票:0回答:1

我正在做练习,其中一部分需要我做一个将用户角色从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

我在做什么错了?

c# ssms relationship
1个回答
0
投票

您可以尝试这种方式

public void ChangeRoleFromUserToSubscribedUser(User u)
{
    var role = u.Roles.FirstOrDefault();
    role.Title = "Subscribed User";
    Entity.Entry(role).State = EntityState.Modified;

    Entity.SaveChanges();
}
© www.soinside.com 2019 - 2024. All rights reserved.