EF Fluent - 如何使用愚蠢的外键将所需的一个映射到可选的一个? (无效外键Table_TableId)

时间:2012-12-05 12:50:25

标签: entity-framework ef-code-first mapping fluent-interface

为什么这样#$ *%很难?不应该。

两张桌子订单&托运人: Orders.ship_via,int是Shippers.ShipperId的FK Shippers.ShipperId是托运人的PK

我的实体:

public class Order : Entity
{
  public int OrderId { get; set; }
  public int ShipVia { get; set; }
  //More properties
  public virtual Shipper Shipper { get; set; }
}

public class Shipper : Entity
{
  public int ShipperId { get; set; }
  //More properties
}

当我运行它时,EF尝试使用不存在的Order.ShipperId自然地填充Order.Shipper。

我不想使用注释。如何创建流畅的地图?

(注意:如果你想运行测试,我的测试环境使用Northwind。)

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

modelBuilder.Entity<Order>()
   .HasRequired(o => o.Shipper) // Or .HasOptional if it's not required
   .WithMany() // No reverse navigation property
   .HasForeignKey(o => o.ShipVia)
   .WillCascadeOnDelete(true);