3

私は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をマップするにはどうすればよいですか?なんらかの関連付けが必要だと思いますが、どうすればよいかわかりません...既存のアドレスエンティティと連絡先エンティティを変更する必要がないことを忘れないでください。

4

1 に答える 1

4

エンティティの定義を覚えておいてください。

属性ではなく、連続性のスレッドとそのアイデンティティによって定義されるオブジェクト。

すべての「エンティティ」には、それを一意に識別する何かが必要です。かぎ。ただし、連絡先ではなくアドレスに一貫したIDを提供するキーが1つしかない、単一の物理タイプから2つのタイプのエンティティを定義しようとしているようです。これはエンティティのルールに違反し、ContactTestの概念を無効にします。

基になる物理タイプ、Testはキープロパティを定義するため、addressIDそのタイプから派生したすべてのEntitySetは、エンティティを定義するルールに準拠するようにそのプロパティをマップする必要があります。そうでなければ、状態の一貫性を維持することは不可能です。

于 2010-06-29T03:34:40.610 に答える