私は2つのテーブルを持っています:contactID(Contact内)で結合されているAddressとContactです。これらのテーブルは両方とも、エンティティデータモデル(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が存在しない場合、そのエンティティからAddressIDをマップするにはどうすればよいですか?なんらかの関連付けが必要だと思いますが、どうすればよいかわかりません...既存のアドレスエンティティと連絡先エンティティを変更する必要がないことを忘れないでください。