Миграция EF Core 7.0 игнорирует DeleteBehavior.NoAction
У меня есть модель EF Core с корневым типом сущности, которая имеет несколько отношений «один ко многим» с другими типами сущностей. Некоторые из этих дочерних типов также связаны друг с другом, поэтому я понимаю, что мне нужно принять меры предосторожности, чтобы избежать проблем с циклическими ссылками при удалении экземпляра корневого объекта.
Без какой-либо явной конфигурации построителя модели между корневым типом объекта и его дочерними типами результирующая миграция включает такие предложения:
migrationBuilder.AddForeignKey(
name: "FK_Merchants_Platforms_PlatformId",
table: "Merchants",
column: "PlatformId",
principalTable: "Platforms",
principalColumn: "Id");
Если я попытаюсь запустить эту миграцию, я увижу следующую ошибку:
В попытке решить эту проблему я добавил явные конфигурации построителя моделей, которые принудительно удаляются. Вот один пример, примененный к дочернему типу сущности:
builder
.HasOne(e => e.Platform)
.WithMany()
.HasForeignKey(e => e.PlatformId)
.OnDelete(DeleteBehavior.NoAction);
Приведенное выше явное изменение не влияет на сгенерированную миграцию. Однако, если я изменю
builder
.HasOne(e => e.Platform)
.WithMany()
.HasForeignKey(e => e.PlatformId)
.OnDelete(DeleteBehavior.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_Merchants_Platforms_PlatformId",
table: "Merchants",
column: "PlatformId",
principalTable: "Platforms",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
Основываясь на том, что я вижу выше, я предполагаю, что это конфигурация по умолчанию, которая неявно применяется при выполнении миграции. Однако, если это так, неясно, почему я вижу ошибки миграции во время выполнения.
Может ли кто-нибудь предложить правильную конфигурацию построителя модели, чтобы заставить