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 显示的关系:
我已尝试使用您提供的信息重现您的问题,它对我有用。请仔细检查以下几点:
- 您确定正在执行迁移吗?
- 您是从另一个文件导入
modelBuilder
吗?如果是,您确定该文件包含在 OnModelCreating
中
我正在使用代码优先方法创建数据库 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 显示的关系:
我已尝试使用您提供的信息重现您的问题,它对我有用。请仔细检查以下几点:
- 您确定正在执行迁移吗?
- 您是从另一个文件导入
modelBuilder
吗?如果是,您确定该文件包含在OnModelCreating
中