Мой файл миграции генерирует следующий сценарий sql:
CREATE TABLE [Provider]
(
[ProviderId] INT NOT NULL,
[BusinessId] INT NULL,
CONSTRAINT [FK_Provider_Business_BusinessId]
FOREIGN KEY ([BusinessId]) REFERENCES [Business] ([BusinessId])
ON DELETE SET NULL,
CONSTRAINT [FK_Provider_AspNetUsers_ProviderId]
FOREIGN KEY ([ProviderId]) REFERENCES [AspNetUsers] ([Id])
ON DELETE CASCADE
);
Ошибка:
Введение ограничения FOREIGN KEY 'FK_Provider_AspNetUsers_ProviderId' для таблицы 'Provider' может вызывать циклы или множественный каскадпути. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY.
Не удалось создать ограничение или индекс. См. Предыдущие ошибки.
Я использую при удалении набор пустых значений в одном из столбцов, почему этого недостаточно?
Бизнес-таблица:
CREATE TABLE [Business]
(
[BusinessId] INT NOT NULL IDENTITY,
[Name] NVARCHAR(100) NOT NULL,
[OwnerId] INT NOT NULL,
CONSTRAINT [PK_Business] PRIMARY KEY ([BusinessId]),
CONSTRAINT [FK_Business_AspNetUsers_OwnerId]
FOREIGN KEY ([OwnerId]) REFERENCES [AspNetUsers] ([Id])
ON DELETE CASCADE
);
Код миграции, который я использую в своем проекте asp:
migrationBuilder.CreateTable(
name: "Provider",
columns: table => new
{
ProviderId = table.Column<int>(nullable: false),
BusinessId = table.Column<int>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Provider", x => x.ProviderId);
table.ForeignKey(
name: "FK_Provider_Business_BusinessId",
column: x => x.BusinessId,
principalTable: "Business",
principalColumn: "BusinessId",
onDelete: ReferentialAction.SetNull);
table.ForeignKey(
name: "FK_Provider_AspNetUsers_ProviderId",
column: x => x.ProviderId,
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});