Entity Framework 创建不需要的外键列

Entity Framework creates undesired foreign key column

我正在使用 Entity Framework Code First 方法。我有这些 类。当然,他们还有其他领域,但与问题无关。

public class User
{
    public int Id { get; set; }
    public Role Role { get; set; }
    public int HouseholdId { get; set; }

    public virtual Household Household { get; set; }
}

public class Household
{
    private ICollection<User> users;

    public Household()
    {
        users = new HashSet<User>();
    }

    public int Id { get; set; }
    public DateTime DateCreated { get; set; }

    public virtual ICollection<User> Users
    {
        get { return users; }
        set { users = value; }
    }
}

我在我的 OnModelCreating 方法中应用了以下设置:

modelBuilder.Entity<User>()
            .HasRequired(u => u.Household)
            .WithMany()
            .WillCascadeOnDelete(false);

当我 运行 应用程序时,除了生成的用户 table 在其设计中添加了一个外键之外,一切都是正确的:

用户Table:

Id
Role
HouseholdId
**Household_Id**

为什么会这样?

只需从您的代码中删除:

modelBuilder.Entity<User>()
        .HasRequired(u => u.Household)
        .WithMany()
        .WillCascadeOnDelete(false);

编辑: 如果您需要 WillCascadeOnDelete(false) 并且无法删除此代码,请尝试以下操作:

modelBuilder.Entity<User>()
        .HasRequired(u => u.Household)
        .WithMany(t => t.Users)
        .WillCascadeOnDelete(false);