Каскадное удаление данных через связь в БД многие-ко-многим
Создал 2 таблицы, задачи и теги. Для объединения через связь многие-ко-многим использую таблицу TaskTag
public class Task
{
public int Id { get; set; }
public string Name { get; set; }
public virtual IList<TaskTag> Tags { get; set; }
}
public class Tag
{
public int Id { get; set; }
public string Name { get; set; }
public virtual IList<TaskTag> Tasks { get; set; }
}
Выполняю удаление, например, задачи по заданному коду, где передаю объект задачи.
public async Task DeleteAsync(T entity)
{
_dbMainContext.Set<T>().Remove(entity);
await _dbMainContext.SaveChangesAsync();
}
Миграция
migrationBuilder.CreateTable(
name: "TaskTag",
columns: table => new
{
TaskId = table.Column<int>(nullable: false),
TagId = table.Column<int>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TaskTag", x => new { x.TaskId, x.TagId });
table.ForeignKey(
name: "FK_TaskTag_Tags_TagId",
column: x => x.TagId,
principalTable: "Tags",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_TaskTag_Tasks_TaskId",
column: x => x.TaskId,
principalTable: "Tasks",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
Но при удалении у меня удаляются данные из Task и из TaskTag но из таблицы Tag данные не удаляются, подскажите, это так и должно быть? Или мне необходимо добавлять какие то дополнительные связи?