2012-12-14 32 views
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(); 

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

任何想法,为什么?

回答

1

那么,你正在从user.Roles删除role,但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(); 
相关问题