Entity Framework 生成新列而不是使用提到的外键

Entity Framework generates new column rather than using the mentioned foreign key

我正在使用代码优先方法创建数据库 table。当迁移发生时,它会在数据库 table Complaints 中创建一个新的列名称 ReceiverUserInfoId。我将外键关系定义为:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.HasAnnotation("Relational:Collation", "SQL_Latin1_General_CP1_CI_AS");
    
    modelBuilder.Entity<Complaint>()
        .HasOne(x => x.ReceiverUserInfo)
        .WithMany()
        .HasForeignKey("ReceivingOfficer")
        .OnDelete(DeleteBehavior.Cascade)
        .IsRequired();
}

Complaint 的模型。 ReceivingOfficer 列应链接到数据库 table 中的列名 Id AspNetUsers

public class Complaint
{
    [Key]
    public int? ComplaintID { get; set; }
    ...
    public string ReceivingOfficer { get; set; }
    ...
    public virtual User ReceiverUserInfo { get; set; }
}

这是 User 模型 class:

public class User : IdentityUser
{
    public string FullName { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime DateModified { get; set; }
}

这是通过 SSMS 显示的关系:

我已尝试使用您提供的信息重现您的问题,它对我有用。请仔细检查以下几点:

  1. 您确定正在执行迁移吗?
  2. 您是从另一个文件导入 modelBuilder 吗?如果是,您确定该文件包含在 OnModelCreating