Sql server EF无法映射外键

Sql server EF无法映射外键,sql-server,entity-framework,entity-framework-6,Sql Server,Entity Framework,Entity Framework 6,我首先在MVC5.2、EF6.1.3和SQLServer2008R2中使用代码 有两个表:Item和Display。项有一个名为PreOrderDisplayID的列,该列带有一个要显示的外键。DisplayID 在EF层中,我有: class Item public int? PreOrderDisplayID { get; set; } public virtual Display PreOrderDisplay { get; set; } ... class Display

我首先在MVC5.2、EF6.1.3和SQLServer2008R2中使用代码

有两个表:Item和Display。项有一个名为PreOrderDisplayID的列,该列带有一个要显示的外键。DisplayID

在EF层中,我有:

class Item
    public int? PreOrderDisplayID { get; set; }
    public virtual Display PreOrderDisplay { get; set; }
...
class Display
    public int DisplayID { get; set; }
    public virtual ICollection<Item> PreOrderItems { get; set; }
...
class OrdersContext : DbContext
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Display>()
                .HasMany(e => e.PreOrderItems)
                .WithOptional(e => e.PreOrderDisplay)
                .HasForeignKey(e => e.PreOrderDisplayID);
}    
...

我做错了什么?谢谢。

问题是,在我将PreOrderDisplay和PreOrderDisplayID添加到项目之前,项目中已经存在另一个要通过Item.Display和Item.DisplayID属性显示的关系。在没有HasForeignKey条款的情况下,该关系运行良好,但一旦添加了新关系,我必须转到原始关系并添加HasForeignKey条款:

modelBuilder.Entity<Display>()
            .HasMany(e => e.Items)
            .WithOptional(e => e.Display)
            .HasForeignKey(e => e.DisplayID);
modelBuilder.Entity()
.HasMany(e=>e.Items)
.with可选(e=>e.Display)
.HasForeignKey(e=>e.DisplayID);

显示
项目
显示
的完整类定义及其完整配置
modelBuilder.Entity<Display>()
            .HasMany(e => e.Items)
            .WithOptional(e => e.Display)
            .HasForeignKey(e => e.DisplayID);