删除多对多关系中的实体。不要收到错误但不删除实体

时间:2012-12-14 23:26:40

标签: entity-framework

在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();

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

知道为什么吗?

1 个答案:

答案 0 :(得分:1)

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

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

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();