为什么Entity Framework会创建一个不映射到任何字段的额外列,并且始终为null?

Can*_*ğlu 3 sql-server entity-framework ef-code-first

我的POCO设置如下:

public class Notification : BaseClass
{

    public User Receiver { get; set; }

    [Required, Index]
    public long ReceiverID { get; set; }

    public virtual User ContextualUser { get; set; }

    public long? ContextualUserID { get; set; }

    public virtual User Actor { get; set; }

    public long? ActorID { get; set; }

    public string Content { get; set; }

    public string Uri { get; set; }

    [Required]
    public string Type { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

我的基类有只有三个属性:ID,CreateDate,和IsDeleted,但没有涉及到User类:

public abstract class BaseClass
{
    [Key]
    public long ID { get; set; }

    [Required]
    public DateTime CreateDate { get; set; }

    public bool IsDeleted { get; set; }

    public BaseClass()
    {
        CreateDate = DateTime.UtcNow;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,Entity Framework会创建一个额外的列User_ID,它始终为null,如下所示:

在此输入图像描述

它显然没有映射到任何东西.我的其他实体(无论是否来自相同的基类)都没有这个幻像列.为什么要创建此列?我使用SQL Azure在EF 6.1.3代码优先.

更新:我也在update-databasePM控制台上运行但没有任何改变,我仍然有这个专栏.

更新2:甚至在列上定义了索引和外键.我已经尝试删除它(它不是一个实时应用程序)但它被一个索引引用:

alter table notifications drop column User_ID

Msg 5074, Level 16, State 1, Line 1
The index 'IX_User_ID' is dependent on column 'User_ID'.
Msg 5074, Level 16, State 1, Line 1
The object 'FK_dbo.Notifications_dbo.Users_User_ID' is dependent on column 'User_ID'.
Msg 4922, Level 16, State 9, Line 1
ALTER TABLE DROP COLUMN User_ID failed because one or more objects access this column.
Run Code Online (Sandbox Code Playgroud)

Can*_*ğlu 5

User班级的导航属性配置不正确.由于Notification类没有叫做财产User,而是Receiver,因为我已经忘了加上正确的名称(接收器)作为我的逆属性User类,它有一个Notifications集合,用于导航产生这种额外的领域 User Notification秒.我已经[InverseProperty("Receiver")]User课堂上为我的集合添加了注释,它现在可以正常工作了.