我有两个表:地址和联系人,它们在contactID(在联系人中)上加入。这两个表在我的实体数据模型 (EF 4.0) 中都有实体,我不想修改它们。
我确实想创建一个包含来自两个实体的信息的新实体。
到目前为止我做了什么:
在 CSDL 中:
<EntityContainer...>
<EntitySet Name="AddressTest" EntityType="WebGearsModel.Test" />
<EntitySet Name="ContactTest" EntityType="WebGearsModel.Test" />
</EntityContainer>
<EntityType Name="Test">
<Key>
<PropertyRef Name="addressID" />
</Key>
<Property Type="Int32" Name="addressID" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
<Property Type="Int32" Name="contactID" Nullable="false" />
<Property Type="String" Name="firstName" Nullable="false" MaxLength="30" FixedLength="false" Unicode="false" />
<Property Type="String" Name="emailAddress" Nullable="false" MaxLength="150" FixedLength="false" Unicode="false" />
</EntityType>
在我的 CS 映射中:
<EntitySetMapping Name="AddressTest">
<EntityTypeMapping TypeName="WebGearsModel.Test">
<MappingFragment StoreEntitySet="Address">
<ScalarProperty Name="addressID" ColumnName="addressID" />
<ScalarProperty Name="contactID" ColumnName="contactID" />
<ScalarProperty Name="firstName" ColumnName="firstName" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="ContactTest">
<EntityTypeMapping TypeName="WebGearsModel.Test">
<MappingFragment StoreEntitySet="Contact">
<ScalarProperty Name="contactID" ColumnName="contactID" />
<ScalarProperty Name="emailAddress" ColumnName="emailAddress" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
我收到的错误是:
从第 150 行开始映射片段的问题:必须为 EntitySet ContactTest 的所有关键属性 (ContactTest.addressID) 指定映射。
当 Contact 实体中不存在 AddressID 时,我应该如何映射该实体?我想我需要某种关联,但我不确定如何去做……请记住,我不想修改现有的地址和联系人实体。