添加迁移后尝试 "update-database" 时出现此错误

I get this error while trying to "update-database" after adding migration

尝试从包管理器控制台更新数据库后出现此错误。这是一些代码。 Class 用户已经在数据库中,我正在尝试将 class Poslovnica 迁移到服务器。

引用的 table 'User' 中没有与外键 'FK_Poslovnica_User_UserID' 中的引用列列表匹配的主键或候选键。 无法创建约束或索引。查看以前的错误。

 public class Poslovnica
{
    public int PoslovnicaID { get; set; }
    [Required]
    public string Naziv { get; set; }

    public string Adresa { get; set; }

    public User User { get; set; }

    public int? UserID { get; set; }
}

我已经添加了一些具有外键 UserID 的 classes,并且没有任何问题

 public class User
{
    public int userID { get; set; }

    

    [Required(AllowEmptyStrings = false)]
    [MaxLength(64)]
    public string ime { get; set; }
   
    
}

来自迁移的模型构建器

 modelBuilder.Entity("ClassLibrary1.Models.Poslovnica", b =>
            {
                b.Property<int>("PoslovnicaID")
                    .ValueGeneratedOnAdd()
                    .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);

                b.Property<string>("Adresa");

                b.Property<string>("Naziv")
                    .IsRequired();

                b.Property<int?>("UserID");

                b.HasKey("PoslovnicaID");

                b.HasIndex("UserID");

                b.ToTable("Poslovnica");
            });

迁移生成器

 migrationBuilder.CreateTable(
            name: "Poslovnica",
            columns: table => new
            {
                PoslovnicaID = table.Column<int>(nullable: false)
                    .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
                Naziv = table.Column<string>(nullable: false),
                Adresa = table.Column<string>(nullable: true),
                UserID = table.Column<int>(nullable: true)
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_Poslovnica", x => x.PoslovnicaID);
                table.ForeignKey(
                    name: "FK_Poslovnica_User_UserID",
                    column: x => x.UserID,
                    principalTable: "User",
                    principalColumn: "userID",
                    onDelete: ReferentialAction.Restrict);
            });

感谢任何帮助!

您在 PoslovnicaUser 之间有一对一的关系,但是 Poslovnica 中的外键与 User 中的主键不匹配。

User 中的 属性 userID 重命名为 UserID 以匹配外键,因为您要按照约定进行,因此它们必须匹配以便 ef核心来了解这种关系。和 re-update

编辑

可能 UserID 未被识别为 table Users 中的主键 将以下属性添加到 UserID :

 public class User
{
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int UserID { get; set; }   
}

并更新您的数据库。