0
I asked this ages ago但是這個問題措辭嚴重。如何在EF代碼中指定複合關係 - 首先不映射到PK
我試圖指定2個類之間的關係,這不是一個簡單的FK映射 - 這是一個預先存在的數據庫,而不是我將從EF生成的東西。
因此,兩個對象的簡化視圖:
public class WidgetDetails
{
[Key]
public int WidgetId { get; set; }
public int WidgetNumber {get; set;}
// Some other props here..
[ForeignKey("WidgetId,WidgetNumber")]
public virtual WidgetProps WidgetProps { get; set; }
}
public class WidgetProps
{
[Key]
public int WidgetPropId { get; set; }
[Key, Column(Order = 0)]
public int WidgetId { get; set; }
[Key, Column(Order = 1)]
public int WidgetNumber { get; set; }
// Some props here...
}
這裏的關鍵是,WidgetProps已經有它自己的PK。但 - 因爲我想能夠使用複合WidgetId和WidgetNumber指定WidgetProps與WidgetDetails相關,我嘗試在我的ForeignKey屬性中指定它。然而,只有當我從WidgetProps.WidgetPropId中移除[KEY]屬性時纔會起作用 - 因爲在EF中,關係是使用鍵映射的。
我想對你說EF是「嘿,這是PK列,但這種關係是不使用它,它是基於這2列」。
這可能嗎?
希望有道理!
看起來像我能做到這一點的唯一方法就是添加代表關係的屬性並從db中獲取相關數據。感謝您的澄清! – 2012-02-08 08:21:50