实体框架:从集合中删除所有实体

时间:2018-10-21 20:51:54

标签: c# entity-framework

我在ASP.NET MVC应用程序中使用身份。

我的身份模型是(涉及的部分):

public class ApplicationUser : IdentityUser
{
    public virtual ICollection<Group> Groups { get; set; }
}

public class Group
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<ApplicationUser> ApplicationUsers { get; set; 
}

我正在得到这样的用户:

    ApplicationUser signedUser = UserManager.FindById(model.Id);

现在,我只想删除此signedUser的所有Group。我已经尝试过foreach循环,但是随着集合的修改,它当然行不通。 我没有RemoveAll()的{​​{1}}方法。

如何实现?

谢谢

2 个答案:

答案 0 :(得分:0)

您应该要求unitOfWork为您完成这项工作:

unitOfWork.Groups.RemoveRange(signedUser.Groups);

或者如果您想直接使用dbset:

foreach(var group in signedUser.Groups)
{
   db.Entry(group).State = EntityState.Deleted;
}
db.SaveChanges(); //After all the customer is deleted, Commit.

答案 1 :(得分:0)

好吧,我明白了。这里的重点是它是一个虚拟属性,实际上只是一个关系。

所以要删除此关系,我必须使用:

signedUser.Groups.Clear();

感谢您的帮助。