【发布时间】:2010-10-03 06:34:33
【问题描述】:
我正在尝试在实体框架模型中定义两个实体(一个映射到表,另一个映射到视图 - 使用 DefinedQuery)之间的 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>
我没有得到什么?
【问题讨论】:
-
有没有办法重新发布该图像?我有同样的问题,但我不确定我们的设计是否相同。
标签: .net visual-studio entity-framework ado.net