尝试更新数据库、使用 C# 和 ASP.NET Core、实体框架时出现外键约束错误

问题描述 投票:0回答:1

这是我遇到的错误:

在表“Battlestation”上引入外键约束“FK_Battlestation_AspNetUsers_UserId”可能会导致循环或多级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。 无法创建约束或索引。查看之前的错误。

这是包含带有外键的属性的模型:

    public class Setup{
    public int Id { get; set; }

    public string UserId {  get; set; } = string.Empty;

    public string SetupName { get; set; }

    public string SetupDesc { get; set; }

    [NotMapped]
    public IFormFile SetupImgFile { get; set; }

    public string ImgPath { get; set; } = string.Empty;

    [NotMapped]
    public bool IsFavourited { get; set; }

    // Navigation property for users who have favorited this setup
    [ForeignKey("UserId")]
    public ApplicationUser? FavouritedByUser { get; set; }

    public Setup()
    {
        
    }
}

}

c# asp.net .net entity-framework asp.net-core
1个回答
0
投票

由于未提供

DbContext
类,我只是假设问题是在
DbContext.OnModelCreating()
方法中,如果您对具有外键的实体调用删除或更新操作,则需要指定更改跟踪器应该执行的操作限制。

有关级联操作,请参阅本教程。基本上,您需要执行类似的操作(取决于您要在删除时对关联实体执行的操作):

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder
    .Entity<Blog>()
    .HasOne(e => e.Owner)
    .WithOne(e => e.OwnedBlog)
    .OnDelete(DeleteBehavior.ClientCascade);

}

© www.soinside.com 2019 - 2024. All rights reserved.