0

我試圖用3個表創建一個EF模型(VS2010,.NET4),每個表都有一個叫做Sync_ID的PK。在沒有PK的實體框架中映射屬性?

TABLE_HEAD:(Sync_ID(PK),GRID_ID INT,SERIALNUMBER INT,YEAR INT)

TABLE_POINT:(Sync_ID(PK),GRID_ID INT,SERIALNUMBER INT,YEAR INT,POINT_NUMBER INT)

TABLE_PLANT (Sync_ID(PK),GRID_ID INT,SERIALNUMBER INT,YEAR INT,POINT_NUMBER INT,PLANT_NUMBER INT)

協會:TABLE_HEAD 「1對多」 TABLE_POINT 「1對多」 TABLE_PLANT

正如你所看到的GRID_ID,SERIALNUMBER,TABLE_HEAD的年份應該映射到GRID_ID,SERIALNUMBER,TABLE_POINT

而且GRID_ID,SERIALNUMBER年,TABLE_POINT年應該被映射到GRID_ID,SERIALNUMBER,YEAR,POINT_NUMBER

我的第一個方法是使用GRID_ID,SERIALNUMBER,年度區分作爲PK,但這將違反條件。

所以唯一的方法是使用Sync_ID作爲PK。但是如何能夠如上所述映射另一個領域?我只能映射PK_Columns嗎?

希望你有想法來幫助我。其他方法也是受歡迎的。 最好的問候!

回答

0

其他的方法是創建正確的數據庫結構!

您有Sync_ID作爲PK,因此在依賴實體中使用它作爲FK而不是做一些你已經描述過的混亂。這與正確的數據庫架構沒有任何共同之處。關係數據庫的重點在於儘量減少數據重複性,但是將第一個表中的幾乎所有數據都複製到所有相關表中。此外:

  • 如果TABLE_HEAD沒有唯一索引GRID_IDSERIALNUMBERYEAR它不可能是一個一對多的關係的主要實體
  • 即使它具有獨特的指數並不重要,因爲EF不支持唯一索引,因此它必須是作爲主體實體參與的主鍵

您應該閱讀有關數據庫規範化的內容。

+0

感謝您的回覆,我知道這是一個混亂的數據庫結構,但它不是我的選擇:-) – user855889