Я пытаюсь определить связь 1:1 между двумя объектами (одна сопоставляется с таблицей, а другая - с представлением - с использованием DefinedQuery) в модели Entity Framework. При попытке определить сопоставление для этого в конструкторе, он заставляет меня выбирать таблицу (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>
Что я не получаю?