EF 4不支持不基於外鍵/主鍵的關聯。有很多場合您需要使用非關鍵字段在表格之間導航。實體框架4 - 關聯
例如,藥物表具有:
medID (PK)
medGrouperID
medName
的成分表具有:
ingredientID (PK)
ingredientName
和鏈路表具有:
medGrouperIDID (PK)
ingredientID (PK)
在這種情況下EF沒有按」不要讓我在藥物和鏈接表之間建立聯繫,因爲兩者都沒有外鍵。
我很長時間沒有做過任何db設計,所以我很難理解這個限制;這是否遵循良好的數據庫設計或EF失敗?
EDIT
的MedGrouperID允許具有相同的成分,使用的指令等的所有藥物組合在一起。這消除了如果每種藥物都具有其自己的成分記錄,用途等的數據的重複數據。
添加新的MedGrouper表格可以工作,但是這會需要一個額外的連接,這對性能不利。
用藥
* MedID (PK)
* MedGrouperID (FK)
* MedName
MedGrouper * MedID(FK) * MedGrouperID(PK)
成分
* IngredientID (PK)
* IngrediantName
MedicationIngredients(結/連接表)
* MedGrouperID (PK, FK)
* IngredientID (PK, FK)
/EDIT
爲什麼您的鏈接表與您想要關聯的兩個表都有FK關係?當沒有藥物或成分存在時,爲什麼你想要關係記錄存在? – 2010-12-07 23:49:10
我的理解是FK必須包含PK的所有字段。所以med和成分表不能使用Link表,因爲它們只有部分重疊的鍵。 – Alistair77 2010-12-08 10:13:08