无法编辑角色

时间:2015-02-10 17:51:24

标签: c# asp.net-mvc razor roles

我在编辑用户角色方面遇到了问题。我有这些代码:

    `    
 Entities db2 = new Entities();
        private UsersContext db = new UsersContext();

   //
            // POST: /AdminOnly/Edit/5
             [Authorize(Roles = "Owner")]
            [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult Edit(UserProfile userprofile, int? roless)
            {
                if (ModelState.IsValid)
                {
                    webpages_UsersInRoles s = new webpages_UsersInRoles();

                    s = db2.webpages_UsersInRoles.Where(m => m.UserId == userprofile.UserId).FirstOrDefault();
                    if (s != null) //with existing role, edit it
                    {
                        s.RoleId = roless.Value;
                        db.Entry(userprofile).State = EntityState.Modified;
                        db2.Entry(s).State = EntityState.Modified;
                        db.SaveChanges();
                        db2.SaveChanges();
                        return RedirectToAction("Index");
                    }
                    else //no existing role
                    {
                       //some code here

                    }
                }
                ViewBag.roless = new SelectList(db2.webpages_Roles, "RoleId", "RoleName");
                return View(userprofile);
            }
    `

当我尝试保存数据库中的更改时,db2.SaveChanges();会向我显示错误消息:

  

类型' System.InvalidOperationException'的例外情况发生在   System.Data.Entity.dll但未在用户代码中处理

     

其他信息:该物业' RoleId'是对象的一部分   关键信息,不能修改。

我该怎么办?提前谢谢!

3 个答案:

答案 0 :(得分:0)

RoleId用作关键约束和实体的主要标识符。你不能改变这个id。只是不要更新此属性或添加更多注释,为什么需要更新它。

答案 1 :(得分:0)

它说RoleId是主键的一部分,无法更改。不要编辑webpages_UsersInRoles中的现有行,而是尝试删除该行并添加一个具有新RoleId值的新行。

答案 2 :(得分:0)

原来我要更改的列是复合外键。我需要删除RoleId的第一个值并将更改保存到表中。然后再次添加第二个值并将新更改保存到表中。感谢那些帮助过的人!