ris*_*mar 5 migration entity-framework entity-framework-core asp.net-core ef-core-2.0
实体框架核心
执行更新数据库时抛出错误
错误:- 在表“UserRoleRelationship”上引入 FOREIGN KEY 约束“FK_UserRoleRelationship_UserRoels_ParentUserRoleId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。无法创建约束或索引。
public class UserRoleRelationship
{
[Key]
public int Id { get; set; }
[Required]
public Guid UserRoleRelationshipId { get; set; }
public virtual UserRole ChildUserRole { get; set; }
public int ChildUserRoleId { get; set; }
public virtual UserRole ParentUserRole { get; set; }
public int ParentUserRoleId { get; set; }
}
public class UserRole
{
[Key]
public int Id { get; set; }
[Required]
public Guid UserRoleId { get; set; }
public virtual Role Role { set; get; }
public int RoleId { set; get; }
public virtual U.User User { set; get; }
public int UserId { set; get; }
}
Run Code Online (Sandbox Code Playgroud)
Tao*_*hou 11
对于您当前的模型设计,它将在下面创建迁移:
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);
Run Code Online (Sandbox Code Playgroud)
FK_UserRoleRelationship_UserRole_ChildUserRoleId
并且FK_UserRoleRelationship_UserRole_ParentUserRoleId
两者都会在删除UserRole
时删除记录,UserRoleRelationship
这将导致多次级联删除。
有关解决方法,尽量让int
如int?
象下面这样:
public int? ParentUserRoleId { get; set; }
Run Code Online (Sandbox Code Playgroud)
这将创建
migrationBuilder.AddForeignKey(
name: "FK_UserRoleRelationship_UserRole_ParentUserRoleId",
table: "UserRoleRelationship",
column: "ParentUserRoleId",
principalTable: "UserRole",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
Run Code Online (Sandbox Code Playgroud)
注意
需要先删除UserRole
,再删除UserRoleRelationship
归档时间: |
|
查看次数: |
9785 次 |
最近记录: |