2

Fluent NHibernate を使用して、エンティティの複合主キーの一部としてコンポーネント プロパティをマップするにはどうすればよいですか?

例えば:

CompositeId().KeyProperty(x => x.Store.StoreCodeId).KeyProperty(x => x.CashRegister);
Component(x => x.Store, m =>
                {
                    m.Map(y => y.StoreCodeId);
                    m.Map(y => y.StoreName);
                }
            );

これでよろしいですか?

4

1 に答える 1

2

列を複数回マップすることができます。保証する必要があるのは、コンポーネントが INSERT および UPDATE ステートメントを 2 回生成しないことです。マッピングがこのように拡張される場合、それは機能するはずです。

CompositeId().KeyProperty(x => x.Store.StoreCodeId).KeyProperty(x => x.CashRegister);
Component(x => x.Store, m =>
  {
    m.Map(y => y.StoreCodeId).Not.Insert().Not.Update();
    m.Map(y => y.StoreName);
  }
);

場合によっては、列の変更から式へのマッピングが可能です。これは、ほとんどの場合、選択と順序付けのみを目的としています。

CompositeId().KeyProperty(x => x.Store.StoreCodeId).KeyProperty(x => x.CashRegister);
Component(x => x.Store, m =>
  {
    m.Map(y => y.StoreCodeId).Formula("[StoreCodeId]").Not.Insert().Not.Update();
    m.Map(y => y.StoreName);
  }
);

最後に、流暢はこのxmlを生成します

<component name="Store" >
  <property name="StoreCodeId" formula="[StoreCodeId]" insert="false" update="false" />
  <property name="StoreName" />
</component>
于 2012-11-07T07:46:53.477 に答える