gpt4 book ai didi

.net - 定义 Entity Framework 1 :1 association

转载 作者:行者123 更新时间:2023-12-04 01:13:00 24 4
gpt4 key购买 nike

我正在尝试在 Entity Framework 模型中定义两个实体(一个映射到表,另一个映射到 View - 使用 DefinedQuery)之间的 1:1 关联。
当试图在设计器中为此定义映射时,它让我选择 (1) 表或 View 来映射关联。我应该选择什么?我可以选择两个表中的任何一个,但随后我不得不为关系的每一端从该表(或 View )中选择一列。我希望能够从一个表中为关联的一端选择一列,从另一个表中为关联的另一端选择一列,但没有办法做到这一点。

在这里,我选择映射到“DW_WF_ClaimInfo” View ,这迫使我从该 View 中选择两列 - 关系的每一端各一列。

我还尝试在 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:MetadataWorkspace 中不存在指定为此 MSL 一部分的列“DOCUMENT”。
似乎它仍然希望两列都来自同一个表,这对我来说没有意义。

此外,如果我为每一端选择相同的键,例如:
<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>

我没有得到什么?

最佳答案

您必须选择包含外键的表。下一步是从实体中删除该外键,因为它已经使用您刚刚创建的关系表达了​​。

例子:

table A
-------
A_ID int
B_ID int


table B
-------
B_ID int

在这种情况下,您将在设计器中选择表 A,因为它包含外键。之后您还需要从 A 实体中删除 B_ID 。

关于.net - 定义 Entity Framework 1 :1 association,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/475150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com