如何使用 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);
}
);
这样可以吗?
最佳答案
可以多次映射列。我们必须保证组件不会生成两次 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);
}
);
最后 flutter 会生成这个 xml
<component name="Store" >
<property name="StoreCodeId" formula="[StoreCodeId]" insert="false" update="false" />
<property name="StoreName" />
</component>
关于nhibernate - 如何将组件属性映射为实体主键的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13253640/