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 语句。如果映射将以这种方式扩展,它应该可以工作。

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 回答