2012-03-12 32 views
0

我有一個可怕的設計DB,其中TableA通過m:n映射表映射到表B,C,D。在EDMX(EF 4.3)中使用m:n表而不將它與相關表相關聯

當我在EDMX中包含映射表時,我得到一個運行時錯誤,entite的鍵列與表的鍵列不匹配。錯誤3002:........

我發現沒有辦法避免這種情況,即使在EDMX模型中取出額外的列時也是如此。當我這樣做的時候,我得到關於多重性的其他錯誤必須是1.

事實上,DB不能也不能改變。

那麼,有沒有辦法在EDMX中顯示m:n映射表而無需關聯? 我問,因爲映射表是不是「看得見」的表,但作爲一個協會(在設計還有其他兩個表之間的線。

+1

是的,EF很聰明,可以將純連接表映射到關聯中。也許在你的情況下,你可以從一個只有映射表的edmx開始,按你認爲合適的方式修改它,然後添加其他表。 – 2012-03-12 16:20:53

回答

1

雖然有可能是一個更好的辦法,有什麼格特說的是什麼,我倒是建議:

  • 使數據庫的副本(至少模式)
  • 一列添加到映射表
  • 更新基於該版本的EDMX(Extra列將意味着表將被列爲'真實'
  • 降額外的列從EDMX

另一種選擇可能的工作(之前沒有嘗試過)

  • 更新模型,只包含映射表(請確保它不包括其他2表第一,至少不是他們兩個)
  • 這應該使它在模型中的「真實表」
  • 更新模式,包括其他的表(一個或多個)

您可以隨時手動創建/映射,但希望以上之一比此更快/更容易。 :)