多对多关系插入和更新

时间:2016-02-04 09:34:32

标签: c# entity-framework

很多关系。 我正在使用EntityFramework 6.1.2 例如,用户和角色之间的关系。

我需要支持下一个场景

添加没有角色的新用户,然后为该用户添加新角色。 但是当我添加新用户而不是某些角色是新的并且某些角色已经存在于db中时,所以我不想复制角色i db。

当我添加新角色时,我不确定该角色是否存在(我是否需要更新或添加?)。

当我一起添加用户和角色时,我实现了方案。但我想稍后添加角色,稍后再添加用户现有角色。

这样的场景有什么好的做法? 你有什么例子吗?

1 个答案:

答案 0 :(得分: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();