在同一个表Entity Framework核心中禁用一对多的删除级联

时间:2018-04-04 08:56:32

标签: c# ef-code-first .net-core entity-framework-core

这是我的表,因此用户可以拥有一个也是用户的经理:

public class User : IdentityUser<int>
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public int? AttachedManagerId { get; set; }
    public ApplicationUser AttachedManager { get; set; }
}

这是尝试在删除管理器时禁用附加用户的删除:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, int>
{
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<User>()
            .HasOne(s => s.AttachedManager)
            .WithMany()
            .HasForeignKey(s => s.AttachedManagerId)
            .OnDelete(DeleteBehavior.SetNull);
    }
}

当我添加迁移时,会生成以下内容:

migrationBuilder.AddForeignKey(
    name: "FK_AspNetUsers_AspNetUsers_AttachedManagerId",
    table: "AspNetUsers",
    column: "AttachedManagerId",
    principalTable: "AspNetUsers",
    principalColumn: "Id",
    onDelete: ReferentialAction.SetNull) ;

所以我有这个错误:

  

调用方法时遇到错误&#39; BuildWebHost&#39;在课堂上   &#39;计划&#39 ;.继续没有应用程序服务提供商。错误:   引入FOREIGN KEY约束   &#39; FK_AspNetUsers_AspNetUsers_AttachedManagerId&#39;在桌上&#39; AspNetUsers&#39;   可能会导致循环或多个级联路径。指定ON DELETE NO   ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY   限制。无法创建约束或索引。见前   错误。

0 个答案:

没有答案