[英]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。
我在更新现有用户的角色时遇到问题。
我想在这里做的是我想通过简单地更新用户并在角色字段中传递1来为用户提供管理员权限,如下所示:
我可以通过此字段将1或2个id传递给控制器,并通过角色ID设置为“admin”:
因为我在USER中有所需的ROLE对象:
我仍然无法使用数据库中的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.