EF 4.1 Code First Foreign Key adds Extra column

本文关键字:Key adds Extra column Foreign First Code EF | 更新日期: 2023-09-27 18:00:32

我有以下两个实体(在许多实体中,但这些实体给我带来了问题)

public class StartPoint
{
    public int StartPointId { get; set; }
    public string Description { get; set; }
    public int StartPointNumber { get; set; }    
    public int StartAreaId { get; set; }
    public StartArea StartArea { get; set; }
}    

public class StartArea
{
    public int StartAreaId { get; set; }
    public string Description { get; set; }
    public ICollection<StartPoint> StartPoints { get; set; }
}

当允许EF创建我的数据库时,它抱怨我需要关闭级联删除,因为有多个路径,我已经这样做了。

        modelBuilder.Entity<StartPoint>()
            .HasRequired(x => x.StartArea)
            .WithMany()
            .HasForeignKey(x => x.StartAreaId)
            .WillCascadeOnDelete(false);

问题是,当创建数据库时,我得到了两个外键,一个叫StartAreaId,正如我所期望的,另一个是StartArea_StartAreaId。只使用StartAreaId。为什么以及如何删除StartArea_StartAreaId。如果我删除上下文中的HasForeignKey并从实体中删除StartAreaId,我会得到多个StartArea_StartAreaId列,如StartArea''yStartAreaID和StartArea''sStartAreaId1。我需要做些什么来阻止这种情况的发生?我只想把StartAreaId作为我的外国钥匙。

EF 4.1 Code First Foreign Key adds Extra column

问题是空WithMany:

    modelBuilder.Entity<StartPoint>()
        .HasRequired(x => x.StartArea)
        .WithMany(y => y.StartPoints)
        .HasForeignKey(x => x.StartAreaId)
        .WillCascadeOnDelete(false);