在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();
我没有收到任何错误,但未删除该角色。
知道为什么吗?
答案 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();