【问题标题】:Many to many relationship insert and update多对多关系插入和更新
【发布时间】:2016-02-04 09:34:31
【问题描述】:

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

我需要支持下一个场景

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

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

当我将用户和角色一起添加时,我实现了场景。但我想稍后添加角色,稍后还要添加具有现有角色的用户。

对于这种情况有什么好的做法? 你有什么例子吗?

【问题讨论】:

  • “当我添加新角色时,我不确定这个角色是否存在”——你怎么不知道你想分配给用户的角色是否存在于数据库中?你必须在某个时候知道这一点。也许将角色添加到用户的Roles 集合属性的方法不知道这一点,但是链上更高的一些方法必须知道,因为它要么创建一个新角色,要么加载一个来自数据库的角色。

标签: c# entity-framework


【解决方案1】:

您可以检查是否已经存在角色。然后只需添加新角色。

//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();

【讨论】:

  • 好的,这是答案的一部分。使用此代码,我将向角色表添加新角色。但是现在我在用户表中有用户,在角色表中有角色,而在 UserRole 表中没有任何内容。 UserRole 表保持用户和角色之间的关系。因为在多对多中,用户和角色之间存在表。
  • 好的,它正在工作。步骤是:1- 添加用户,2- 添加新角色,如您的示例 3-使用新角色更新用户。
  • 没错,我只是展示了添加或更新角色的步骤:)
猜你喜欢
  • 2021-08-24
  • 2012-03-23
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
相关资源
最近更新 更多