使用分区鉴别器列映射分区表

时间:2011-12-12 14:17:35

标签: c# nhibernate fluent-nhibernate

我有一个旧的Oracle 10g数据库。此数据库有一个表ITEMDELIVERY,其中包含DELIVERY_DATE列。该表由此列分区。因此,此表的主键是包含ITEMDELIVERY_IDDELIVERY_DATE列的复合键。
另一个表格ITEMDELIVERYDETAIL的FK为ITEMDELIVERY。为了能够从分区中受益并且能够自己进行分区,此表有一列PARTITION_DATEITEMDELIVERY_IDPARTITION_DATE将FK组成ITEMDELIVERY

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

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

但这不起作用,我得到以下例外:

  

NHibernate.PropertyNotFoundException:在“Domain.ItemDeliveryDetail”类中找不到属性“DeliveryDate”的getter

有没有办法实现我的目标?

3 个答案:

答案 0 :(得分:2)

我认为这个问题的答案是使用您在另一个question中展示的ItemDelivery中的ItemDeliveryDetail参考。

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

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

答案 1 :(得分:1)

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

流利的NHibernate对此有一个solution,用他们自己的话来说并不理想,但它确实支持这个功能。

答案 2 :(得分:0)

如果您对自己的域名不感兴趣,为什么要映射它?如果要映射Item的属性,请将其添加到ItemDelivery类映射