Я пытаюсь определить связь 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>
Что я не получаю?