使用分离的对象和复合关系表

时间:2015-02-25 19:28:58

标签: entity-framework entity-framework-6

我有一个用户实体,它是一个角色列表。角色列表来自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);

0 个答案:

没有答案