0

在 EF5 中,我有两个实体:用户和角色。

用户和角色之间存在多对多关系。

我没有设置关系的 UserRoles 数据库的实体。

我有一个用户,我想删除一个角色而不从数据库中加载它。

  Context context = new Context();
  User user = context.Users.First(x => x.Id == 4);
  user.Roles = new List<Role>();
  Role role = new Role { Id = 20 };
  context.Roles.Attach(role);
  user.Roles.Remove(role);
  context.SaveChanges();

我没有收到任何错误,但角色没有被删除。

知道为什么吗?

4

1 回答 1

1

好吧,您正在删除但role不在此列表中,因此没有任何反应。user.Rolesrole

我认为您必须立即将用户角色附加到上下文中,以便更改检测可以在您删除角色时识别对象图的更改:

Context context = new Context();

User user = new User { Id = 4 };
user.Roles = new List<Role>();
Role role = new Role { Id = 20 };
user.Roles.Add(role)

context.Users.Attach(user);

user.Roles.Remove(role);

context.SaveChanges();
于 2012-12-16T00:38:31.913 回答