2016-02-04 49 views
0

多對多的關係。 我正在使用EntityFramework 6.1.2 例如,用戶和角色之間的關係。多對多的關係插入和更新

我需要支持在下一個場景

添加新用戶沒有作用,而不是後來添加新角色爲該用戶。 但是,當我添加新用戶比一些角色是新的和一些角色已經存在數據庫中,所以我不想重複角色我db。

當我添加新角色時,我不確定這個角色是否存在(我是否需要更新或添加?)。

我實現了將所有用戶和角色一起添加的場景。但是我想稍後添加角色,也可以稍後添加用戶與現有角色。

像這樣的場景的良好做法是什麼? 你有什麼例子嗎?

+0

「當我添加新角色時,我不確定這個角色是否存在」 - 你怎麼能不知道你想分配給用戶的角色是否存在於數據庫中?你必須在某個時候知道。也許將角色添加到用戶的「Roles」集合屬性的方法並不知道,但鏈上的某些方法*有*要知道,因爲它可以創建新角色或從DB加載角色。 –

回答

2

您可以檢查是否已有角色。然後只需添加新的角色。

//your roles which will be assigned to the user 
var roles = new List<Roles>(); 

//get the ids of the existing roles 
var existingRoleIds = context.Roles.Select(r => r.Id).ToList(); 

//filter the existing roles out 
var rolesToAdd = (from r in roles 
       where existingRoleIds.Contains(r.Id) == false 
       select r).ToList(); 

//add the new roles 
context.Roles.AddRange(rolesToAdd); 
context.SaveChanges(); 
+0

好的,這是答案的一部分。通過這段代碼,我將只爲角色表添加新角色。但是現在我有用戶表中的角色,角色表中的角色,並且UserRole表中沒有任何內容。 UserRole表保持用戶和角色之間的關係。因爲在許多情況下,用戶和角色之間是表格。 – Raskolnikov

+1

好吧,它現在正在工作。步驟如下:1-添加用戶,2-在您的示例3-Update用戶中添加新角色,並添加新角色。 – Raskolnikov

+1

沒錯,我只是展示了添加或更新角色的步驟:) –