Миграция 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);

Основываясь на том, что я вижу выше, я предполагаю, что это конфигурация по умолчанию, которая неявно применяется при выполнении миграции. Однако, если это так, неясно, почему я вижу ошибки миграции во время выполнения.

Может ли кто-нибудь предложить правильную конфигурацию построителя модели, чтобы заставитьв сгенерированной миграции?

0 ответов

Другие вопросы по тегам