我有第三方服務,我從中獲取大量數據,我想將這些信息存儲在本地數據庫中。假設我的數據庫中有3個表格用戶,角色和UserRole。EF Code First多對多關係 - 插入重複記錄到數據庫
- 用戶表包含以下字段 - UserId(PK),UserName。
- 角色表包含以下字段 - RoleId(PK),RoleName。
- UserRole表包含以下字段 - UserId(FK),RoleId(FK)。
所以有一個多對多用戶和角色表之間的關係。
當我嘗試將以下記錄保存到數據庫時,其生成的重複記錄在角色表中。
using (CFAContext context = new CFAContext())
{
context.Users.Add(new User { UserName = "User 1", Roles = new List<Role> { new Role { RoleName = "Role 1" }, new Role { RoleName = "Role 2" }, new Role { RoleName = "Role 3" } } });
context.Users.Add(new User { UserName = "User 2", Roles = new List<Role> { new Role { RoleName = "Role 1" }, new Role { RoleName = "Role 2" } } });
context.Users.Add(new User { UserName = "User 3", Roles = new List<Role> { new Role { RoleName = "Role 1" }, new Role { RoleName = "Role 4" } } });
context.SaveChanges();
}
我怎麼能沒有用戶和角色表中的任何重複記錄插入此列表數據庫(用戶和角色)?
謝謝daryal。我的情況就像我需要插入大約50000行,並且當前列表的格式是我在問題中給出的。所以根據你的建議,首先我必須從集合中收集角色列表,並且在向上下文添加記錄時,我必須參考上述角色列表。這對我來說是正確的方法還是您有任何其他建議? – Dennis
@ Dennis你是對的,首先創建角色,然後在創建用戶時使用這些角色,然後堅持。 – daryal