nhibernate - 如何将组件属性映射为实体主键的一部分?

标签 nhibernate fluent-nhibernate fluent-nhibernate-mapping

如何使用 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/

相关文章:

NHibernate 2.1.2 抛出 DateTime 空溢出异常

N休眠: Projection List

c# - Fluent NHibernate Composite ID表问题

linq - NHibernate Linq 提供程序中的 Fetch 与 FetchMany

c# - NHibernate 获取全部

asp.net-mvc - 在 Asp.Net MVC 应用程序中使用 Structuremap 将 ISession 注入(inject)我的存储库

nhibernate - 枚举到整数的映射导致每次刷新时都会更新

nhibernate - FluentNHibernate 或端口到 NHibernate 的代码映射

c# - 将同一实体映射到不同的表

c# - Fluent NHibernate 日期时间 UTC