Для вашей текущей модели модель создаст миграцию ниже:
migrationBuilder.AddForeignKey(
name: "FK_UserRoleRelationship_UserRole_ChildUserRoleId",
table: "UserRoleRelationship",
column: "ChildUserRoleId",
principalTable: "UserRole",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_UserRoleRelationship_UserRole_ParentUserRoleId",
table: "UserRoleRelationship",
column: "ParentUserRoleId",
principalTable: "UserRole",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
FK_UserRoleRelationship_UserRole_ChildUserRoleId
и FK_UserRoleRelationship_UserRole_ParentUserRoleId
оба будут удалять записи в UserRole
при удалении UserRoleRelationship
, что вызовет многократный каскадудалять.
В качестве обходного пути попробуйте сделать int
как int?
, как показано ниже:
public int? ParentUserRoleId { get; set; }
, который создаст
migrationBuilder.AddForeignKey(
name: "FK_UserRoleRelationship_UserRole_ParentUserRoleId",
table: "UserRoleRelationship",
column: "ParentUserRoleId",
principalTable: "UserRole",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
Примечание
Сначала необходимо удалить UserRole
, затем удалить UserRoleRelationship