2010-10-07 139 views
5

我被困在這裏。將數據從2個表映射到1個實體 - 實體框架4

是否有可能從2個不同的表中的實體框架4

數據映射到一個實體我有一大堆的員工在一個表中,而在其他我索姆項目信息。 我想將這兩個表合併成一個實體,並保持跟蹤功能等,這是可能的嗎?

我不想使用函數導入,而只是通過實體模型來完成。

誰能幫助 - 當我嘗試這樣做,我得到以下錯誤所有的時間:

錯誤3024:問題在映射片段開始行2354:必須指定所有關鍵特性映射(MyProjectTable。 PSInitials,MyProjectTable.ProjectID)的EntitySet MyProjectTable。

兩個鍵都映射到它們各自的表。 新的實體是以MyProjectTable作爲基礎表。

2張桌子之間的關係是1 *

希望你能幫上忙。

/Christian

+0

AFAIK你不能這樣做。如果他們可以合併爲一個實體,爲什麼他們不能合併成一個表?或者另一種選擇 - 把它們留作兩個實體 - 並將它們「投射」爲一個實體(即特殊的POCO) – RPM1984 2010-10-07 09:33:58

+0

嗯 - 發現這篇文章 - http://blogs.msdn.com/b/simonince/archive/2009/03 /23/mapping-two-tables-to-one-entity-in-the-entity-framework.aspx - 顯然這可以在1-1關係上完成。 但是,在1- *關係上做同樣的處理會產生以下錯誤: 錯誤3024:從行2009開始映射片段時出現問題:必須爲EntitySet MyProjectTable的所有關鍵屬性(MyProjectTable.PSInitials,MyProjectTable.ProjectID)指定映射。 任何建議???? – 2010-10-07 09:47:00

+0

如果它是1- *,那麼爲什麼你想要一個實體?這沒有什麼意義。 – 2010-10-07 11:55:22

回答

5

您不能將具有一對多關係的兩個表映射到一個實體。如果您不想將結果投影到代碼中的一個對象中,請考慮創建一個視圖並將其映射。

根據http://msdn.microsoft.com/en-us/library/bb896233.aspx

You should only map an entity type to multiple tables if the following conditions are true:

  • The tables to which you are mapping share a common key.

  • The entity type that is being mapped has entries in each underlying table. In other words, the entity type represents data that has a one-to-one correspondence between the two
    tables; the entity type represents an inner join of the two tables.

1

的原因,這樣做是非常簡單 - 例如,所有有五「類型」的一個數據點的表格。很顯然,爲了規範化,「類型」將是一個單獨的表格,但從應用程序的角度來看(使用數據),將所有屬性放在單個實體中更有意義。

所以我們不能用實體框架 - 一個假定的對象 - 關係 - 映射器來做到這一點。那麼,使用這種框架的意義何在呢?

+0

我認爲這個觀點會更有效地以數據庫視圖的方式完成,而不是創建充當視圖的實體。我正試圖自己做同樣的事情...我仍然是。由於我是一個代碼人,無法控制數據庫,所以能夠以這種方式提供這些實體而不必操作數據存儲區會有所幫助......但我理解不這樣做的基本原理。 – 2012-10-05 02:55:31