如何使用实体框架添加新的“多对多”表数据

时间:2013-07-19 11:41:55

标签: entity-framework

我正在开发Asp.net mvc Web应用程序和实体框架。我有下表: -

  • 用户表(用户ID,姓名,年龄等)

  • 组表,(GroupID,名称,描述,etC)

  • 和UserGroup表。 (UserID,GroupID)

但由于UserGroup表是一个纯粹的多对多关系,它存储了UserID& GroupID,因此未使用实体框架进行映射。现在我知道GroupID和USerID,所以我如何填充它们之间的关系。我应该做的事情如下: -

 Group.Where(a=.a.GroupID).singleordefualt().User.ADD(//something here !!!)

1 个答案:

答案 0 :(得分:1)

var group = db.Groups.Find(groupId);
if (group != null)
{
    group.Users.Add(user); // add user to existing users
    db.SaveChanges();
}

OR

user.Groups.Add(group); // add group to existing groups
db.SaveChanges();

如果您想要替换用户,那么只需分配新的集合:

group.Users = new List<User> { user };
db.SaveChanges();

如果您要从其组中删除用户,请将此用户添加到其他组:

var user = db.Users.Find(userId);
user.Groups.Clear();
var group = db.Groups.Find(groupId);
user.Groups.Add(group);
db.SaveChanges();

如果您想从群组中删除部分用户:

var group = db.Groups.Find(groupId); // get your group
var userToRemove = group.Users.Last(); // select user, e.g. last one
group.Users.Remove(userToRemove); // remove user from group users
db.SaveChanges(); // save changes