我有两个实体的用户和角色如何删除EF中的Many to many表中的记录而不删除它自己的实体?
public partial class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string SecondName { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
public partial class Role
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<User> Users { get; set; }
}
和我的数据库只包含用户名和角色ID具有表(RoleUser)。 我想修改用户,删除角色用户表中存在的行并插入新记录。 当我用这下面的代码它删除RoleUser表中的行,也是角色本身
public void Update(User usr)
{
var existingParent = _context.Users
.Where(p => p.Id == usr.Id)
.Include(p => p.Roles)
.SingleOrDefault();
if (existingParent != null)
{
// Update parent
_context.Entry(existingParent).CurrentValues.SetValues(usr);
// Delete children
foreach (var existingChild in existingParent.Roles.ToList())
{
if (!usr.Roles.Any(c => c.Id == existingChild.Id))
_context.Roles.Remove(existingChild);
}
}
}
的问题是如何删除存在的记录RoleUser表,没有删除实体本身插入新记录?
检查你的数据库模型。如果其中一个外键被删除(这里是User),则连接表(RoleUser)应该级联删除。然后,您只需要在您的代码中删除用户,并且数据库将负责角色用户 – Mats391
ASP.NET与Entity Framework完全无关。 ASP.NET(和MVC)是Web框架,EF是一个ORM。如果你使用ASP.NET术语寻找EF答案,你将无法找到你想要的东西 –