映射带有分区鉴别符列的分区表

本文关键字:分区表 鉴别 分区 映射 | 更新日期: 2023-09-27 18:17:40

我有一个旧的Oracle 10g数据库。这个数据库有一个表ITEMDELIVERY,其中有一个列DELIVERY_DATE。表按此列进行分区。因此,该表的主键是包含ITEMDELIVERY_IDDELIVERY_DATE列的复合键。
还有另一个表ITEMDELIVERYDETAIL,它对ITEMDELIVERY有一个FK。为了能够从分区中获益,也为了能够对自己进行分区,这个表有一个列PARTITION_DATEITEMDELIVERY_IDPARTITION_DATE构成到ITEMDELIVERY的FK。

PARTITION_DATEITEMDELIVERYDETAIL中没有商业意义,只是出于技术原因。因此,我希望避免在我的实体中指定此列。
我在IAutoMappingOverride<ItemDeliveryDetail>的实现中尝试了以下操作:

mapping.Map(x => x.ItemDelivery.DeliveryDate).Column("PARTITION_DATE");

但这不起作用,我得到以下异常:

NHibernate。在类"Domain"中找不到属性"DeliveryDate"的getter。ItemDeliveryDetail '

有什么方法可以达到我的目标吗?

映射带有分区鉴别符列的分区表

我认为这个问题的答案是在ItemDeliveryDetail中使用ItemDelivery的参考,你在另一个问题中显示。

mapping.References(x => x.ItemDelivery)
    .Columns("ITEMDELIVERY_ID", "PARTITIONDATE");

这使得它不可见,自动填充,并且对其父的引用是相同的

在"classic" NHibernate中,我曾经通过将access="private"添加到属性映射来解决类似的问题。这告诉NHibernate映射到一个私有成员变量,因此,这个私有成员变量对模型的其余部分是不可见的。

Fluent NHibernate对此有一个解决方案,用他们自己的话来说并不理想,但它确实支持这个特性。

如果您对在您的域中拥有它不感兴趣,为什么要映射它?如果您想映射Item的属性,那么将它添加到ItemDelivery类映射