我試圖在實體框架模型中定義兩個實體(一個映射到一個表,另一個映射到一個視圖 - 使用DefinedQuery)之間的1:1關聯。 試圖在設計器中爲此定義映射時,它使我選擇(1)表或視圖來將關聯映射到。我應該選擇什麼?我可以選擇兩個表中的任意一個,但是我不得不爲這個關係的每一端選擇一個來自該表(或視圖)的列。我希望能夠從一個表中爲聯合的一端選擇一個列,並在另一個表中爲聯合的另一端選擇一個列,但是沒有辦法做到這一點。定義實體框架1:1協會
在這裏,我選擇映射到「DW_ WF_ClaimInfo」視圖,它迫使我從該視圖中選擇兩列 - 關係的每一端。
我也試過在XML手動定義如下映射:
<AssociationSetMapping Name="Entity1Entity2" TypeName="ClaimsModel.Entity1Entity2"
StoreEntitySet="Entity1">
<EndProperty Name="Entity2">
<ScalarProperty Name="DOCUMENT" ColumnName="DOCUMENT" />
</EndProperty>
<EndProperty Name="Entity1">
<ScalarProperty Name="PK_DocumentId" ColumnName="PK_DocumentId" />
</EndProperty>
</AssociationSetMapping>
但是這給: 錯誤2010:指定爲該MSL中MetadataWorkspace不存在的部分列「文件」 。 似乎它仍然期望兩列都來自同一張表,這對我來說沒有任何意義。
而且,如果我選擇的每一端,例如:
<AssociationSetMapping Name="Entity1Entity2" TypeName="ClaimsModel.Entity1Entity2"
StoreEntitySet="Entity1">
<EndProperty Name="Entity2">
<ScalarProperty Name="DOCUMENT" ColumnName="PK_DocumentId" />
</EndProperty>
<EndProperty Name="Entity1">
<ScalarProperty Name="PK_DocumentId" ColumnName="PK_DocumentId" />
</EndProperty>
</AssociationSetMapping>
相同的密鑰然後我得到:
Error 3021: Problem in Mapping Fragment starting at line 675: Each of the following
columns in table AssignedClaims is mapped to multiple conceptual side properties:
AssignedClaims.PK_DocumentId is mapped to
<AssignedClaimDW_WF_ClaimInfo.DW_WF_ClaimInfo.DOCUMENT,
AssignedClaimDW_WF_ClaimInfo.AssignedClaim.PK_DocumentId>
什麼我沒有得到?
有沒有一種方法可以重新發布該圖像?我有同樣的問題,但我不確定我們的設計是否相同。 – 2010-04-08 16:10:05