2

次の NHibernate マッピングを検討し、コメント付きのプロパティに注目してください。これらは、で指定されたkeyおよび列と同じ列です。コメントを削除すると (したがって、プロパティの列と列が含まれます)、「コレクションのマッピングで列が繰り返されます」という例外が発生します。indexmapTypeOfPartUnitId

<map name="Parts" table="ActiveUnitParts" lazy="false">
  <key column="UnitId" />
  <index column="TypeOfPart" type="integer"/>
  <composite-element class="ActiveUnitPart">
    <property name="Id" />
    <property name="CreationDate" />
    <property name="PartInfo"/>
    <property name="Remarks"/>
    <!-- <property name="TypeOfPart" /> -->
    <!-- <property name="UnitId" /> -->
  </composite-element>
</map>

コードで必要なのはDictinonary<TypeOfpart, ActiveUnitPart>. しかし、私が抱えている問題は、プロパティUnitIdとの値が のインスタンスにTypeOfPart設定されていないことです。ActiveUnitPartDictinonary<TypeOfpart, ActiveUnitPart>

はい、このユニットの関連パーツのリストが読み込まれます。はい、辞書のキーは右のパーツに関連付けられています。しかし、プロパティ自体を参照しTypeOfPartUnitIdプロパティを埋めることができない理由がわかりません。ActiveUnitPart

これを解決または回避するにはどうすればよいですか?

これが必要な理由:ActiveUnitPart関連するUnit( UnitId)を参照せずに s を操作できる必要がある

編集 1:Partsのプロパティの セッターを傍受し、コードで値を設定するために Unit反復できることはわかっていますが、可能であれば、よりエレガントな方法でそれを実行したいと考えています。Dictinonary<TypeOfpart, ActiveUnitPart>hackNHibernate

4

1 に答える 1