[英]How to specify composite relationships in EF code-first that don't map to PKs
我在很久以前問過這個問題,但是這個問題措辭嚴厲。
我試圖指定兩個類之間的關系,這不是一個簡單的FK映射 - 這是一個預先存在的數據庫,而不是我將從EF生成的東西。
那么,2個對象的簡化視圖:
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專欄,但這種關系沒有使用它,它基於這兩列 ”。
這可能嗎?
希望有道理!
這不可能。 EF只能創建遵循數據庫規則的關系。 從屬方面的FK必須包含主要方面的PK的所有部分。
一般規則:EF fluent API無法使用PK,FK關系定義您無法在數據庫中定義的任何關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.