2012-12-14 30 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(); 
相關問題