Sql server EF无法映射外键
我首先在MVC5.2、EF6.1.3和SQLServer2008R2中使用代码 有两个表:Item和Display。项有一个名为PreOrderDisplayID的列,该列带有一个要显示的外键。DisplayID 在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
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);