SqlException: оператор DELETE конфликтует с ограничением REFERENCE
"FK_SecurityAssignments_UserGroups_UserGroupId". Конфликт
произошел в базе данных «AppDb», таблица
«dbo.SecurityAssignments», столбец «UserGroupId». Утверждение
было прекращено.
Я следовал подходу из этого поста, но, очевидно, что-то упустил

Каскадное удаление с помощью EF Core
Модели:
Код: Выделить всё
public class UserGroup
{
public int Id { get; set; }
public virtual ICollection SecurityAssignments { get; set; } = new List();
}
public class Role
{
public int Id { get; set; }
public virtual ICollection SecurityAssignments { get; set; } = new List();
}
public class SecurityAssignment
{
public int Id { get; set; }
public int UserGroupId { get; set; }
public virtual UserGroup UserGroup { get; set; }
public int RoleId { get; set; }
public virtual Role Role { get; set; }
}
Код: Выделить всё
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Remove cascade delete unless explicit set below
var cascadeFKs = builder.Model
.GetEntityTypes()
.SelectMany(t => t.GetForeignKeys())
.Where(fk => !fk.IsOwnership && fk.DeleteBehavior == DeleteBehavior.Cascade);
foreach (var fk in cascadeFKs)
{
fk.DeleteBehavior = DeleteBehavior.Restrict;
}
// explicit set cascade delete
// Remove security assignments when group deleted
builder.Entity().HasMany(x => x.SecurityAssignments).WithOne(x => x.UserGroup).HasForeignKey(x => x.UserGroupId).OnDelete(DeleteBehavior.Cascade);
}
Подробнее здесь: https://stackoverflow.com/questions/659 ... ference-co