繁体   English   中英

USER使用Entity Framework将新角色更新到数据库中

[英]USER Update with new role into database with Entity Framework

我在使用新角色分配或更改角色(1或2)时更新/编辑用户时遇到问题。 角色与NO Exception或Error保持一致。

注意:我在这里发布截图,因为我想准确显示我所看到的内容。

我有一个User类,其中包含角色和城市关联类:

public class User
{   
    public City CityId { get; set; }

    public virtual Role Role { get; set; }

    public bool IsInRole(int id)
    {
        return Role != null && Role.Id == id;
    }       
}

Role表只有两个角色,Admin ID = 1,guest ID ID = 2。

roleDBTable

我在更新现有用户的角色时遇到问题。

我想在这里做的是我想通过简单地更新用户并在角色字段中传递1来为用户提供管理员权限,如下所示:

视图 类型进行视图

我可以通过此字段将1或2个id传递给控制器​​,并通过角色ID设置为“admin”:

调节器

因为我在USER中有所需的ROLE对象:

的DbContext

我仍然无法使用数据库中的Admin角色更新用户。 它仍然具有Guest角色ID。

相同的方案是User类中的CityID

任何帮助,将不胜感激

您需要找到该特定用户的ID,如:

public void UserEdit(int?id //id is your parameter here)
{
   //This is what you need.

    User user= db.User.Find(id);
    user.Role = //this is the new Role if this user
    user.CityId = //city id here
}

更新用户:

public void UpdateUser(User user)
{
   db.Entry(user).State = EntityState.Modified;
   db.SaveChanges();

}

您需要用户表而不是角色表..

//示例类

public class User_Table
{   
    public int ID { get; set; }

    public string name { get; set; }

    public int RoleID { get; set; }
}

此表是您需要更新角色表作为上面示例的表。

问题是你必须首先找到id然后确保Role表不应该被修改:

public void Update(User users // this is your object`enter code here)
{
    using(_db)
    {
        User user= db.User.Find(users.id);
        user.Role_id = users.Role_id; // this is what you want to change.
        _db.Entry(Role).State = EntityState.Unchanged;
        _db.SaveChanges();
    }
}

希望这会有所帮助。 干杯

你传递用户的完整对象它将改变另一个表的状态,为什么首先取用用户对象,因为它是将数据存储更改为另一个新对象,然后UPDate AND状态保持不变的ROle表我希望它工作正常

 public ActionResult UpdateUser(User newUser)
    {
        newUser.City = new City { Id = Convert.ToInt32(fdata["CityList"]) };
        dbcontext db = new dbcontext();
        if (ModelState.IsValid)
        {
            using (db)
            {
                User oldUser = db.Users.Find(newUser.Id);
                oldUser.Role = newUser.Role;

                db.Entry(newUser.Role).State = EntityState.Unchanged;
                db.SaveChanges();
                return View();
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM