我有一个用户实体,它是一个角色列表。角色列表来自UserRole表,该表使用组合键UserId和RoleId
从管理客户端更新用户,这意味着它已分离。 我的代码看起来像
public void UpdateUser(User user)
{
db.Entry(user).State = EntityState.Modified;
if (string.IsNullOrEmpty(user.Password))
db.Entry(user).Property(x => x.Password).IsModified = false;
else
{
HashPassword(user);
}
db.SaveChanges();
}
如何让EF了解对关系表所做的更改?
修改
如果关系具有自己的主键,则可以迭代集合并执行db.Entry(role).State = role.Id == 0 ? EntityState.Added : EntityState.Modified;
这不适用于像我的角色>这样的复合键关系。用户关系。我该如何解决这个问题?
EDIT2: 试过这个,没用了
var roles = user.Roles.Select(r => db.Roles.Find(r.Id)).ToList();
user.Roles.Clear();
roles.ForEach(user.Roles.Add);