2012-12-05 55 views
0

爲什麼這樣#$ *%很難?不應該。EF Fluent - 如何使用高級外鍵將需要的映射到可選的映射? (無效的外鍵Table_TableId)

兩個表訂單&託運人: Orders.ship_via,一個int是FK到Shippers.ShipperId 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)。

回答

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); 
+0

是的,就是這樣。 Aaargh! – Rap