8

我正在使用實體框架,並遇到奇怪的構建錯誤。在實體框架中映射片段的問題

我建立一個論壇,我建立了一個數據庫表中的「忽略」,當人們不喜歡對方,他們會忽略的人。該表有兩列,它們是主鍵。

PK InitiatingUser 
PK IgnoredUser 

當EF映射該表我得到這個錯誤:

錯誤7錯誤3034:問題在起始於線1467,1477的映射片段:兩個實體具有可能不同的密鑰被映射到同一行。確保這兩個映射片段將AssociationSet的兩端映射到相應的列。

我在xml編輯器中打開了edmx並導航到違規行。

  <MappingFragment StoreEntitySet="Ignores"> 
      <ScalarProperty Name="IgnoredUser" ColumnName="IgnoredUser" /> 
      <ScalarProperty Name="InitiatingUser" ColumnName="InitiatingUser" /> 
      </MappingFragment> 

我剛剛開始使用EF,我不明白髮生了什麼或者問題可能是什麼。

任何幫助表示讚賞。

EDIT 用於有外鍵映射兩者發起用戶和用戶忽略用戶表的主鍵(用戶名)忽略之間的關係。那是我第一次將EF映射到此表時的情況。我已經刪除了FK,看看這會有所幫助,但事實並非如此。

+1

數據庫中的關係如何? – bzlm 2011-01-27 20:42:18

+0

查看我的關係編輯。 – Chev 2011-01-27 20:44:52

回答

5

我不知道什麼是錯在這裏,但我剛剛刪除的表從ORM和DB然後用一個實際的ID列重建,而不是兩個主鍵它。我重新映射了表格,編譯完成,現在一切正常。按照我的方式進行操作會很方便,但是很好。

如果有人有任何見解讓我知道。我寧願接受別人的回答。

+0

洞察力:它可能會試圖維持您在模型中所做的任何更改,而不是盲目跺腳,重新創建所有內容。儘管如此,你的回答也解決了我的問題。 – gbjbaanb 2013-08-12 10:09:39

23

這可能是由於包括許多一對多在實體模型連接表,或者是什麼EF認爲是這樣一個表(可能如一個不具有其自身包含的關鍵,但其身份由兩個或更多外鍵組成)。

因此,舉例來說,假設你有如下表:

  • 地址
  • PersonAddress(只包含是PersonID和AddressID)

在你的實體模型,您應該只添加個人和地址。如果你添加PersonAddress,那麼EF會拋出錯誤。根據this MSDN Q&A,EF會自動考慮連接表。