我不知道该以哪种方式执行此操作,因此请求一些指导。我的实体设置为 https://stackoverflow.com/a/53972658/980917。
我有一个 RoleEntity、PermissionEntity 和一个 RolePermissionsEntity。通常设置...
RoleEntity - has ICollection<PermissionEntity>
RolePermissionEntity - joining entity
PermissionEntity - has ICollection<RoleEntity>
在 OnModelBuilding 中我有...
modelBuilder.Entity<RolePermissionEntity>()
.HasKey(a => new { a.RoleId, a.PermissionId });
modelBuilder.Entity<RolePermissionEntity>()
.HasOne(rp => rp.Role)
.WithMany(b => b.UserPermissions)
.HasForeignKey(bc => bc.Role);
modelBuilder.Entity<RolePermissionEntity>()
.HasOne(rp => rp.Permission)
.WithMany(c => c.RolePermissions)
.HasForeignKey(bc => bc.PermissionId);
现在我知道我需要添加 OnDelete 关键字,但我不知道要使用哪些关键字来实现我的目标。
我希望:-
任何帮助/解释都会很棒。
答案 0 :(得分:0)
您可以使用 .OnDelete(DeleteBehavior.Cascade)
。
modelBuilder.Entity<RolePermissionEntity>(O =>
{
O.HasKey(a => new { a.RoleId, a.PermissionId });
O.HasOne(rp => rp.Role)
.WithMany(b => b.RolePermissionEnties)
.HasForeignKey(bc => bc.RoleId).OnDelete(DeleteBehavior.Cascade);
O.HasOne(rp => rp.Permission)
.WithMany(c => c.RolePermissionEnties)
.HasForeignKey(bc => bc.PermissionId);
});
删除角色: //将Role和join表中的相关数据删除。
var role = _context.RoleEntity.Single(c => c.Id == 2);
_context.Remove(role);
_context.SaveChanges();
删除连接表(假设1和1有关系): //只会删除连接表。
var rolepermission= _context.RolePermissionEntity.Where(o => o.RoleEntityId == 1&&o.PermissionEntityId==1).FirstOrDefault();
_context.Remove(rolepermission);
_context.SaveChanges();