我有一个旧的Oracle 10g数据库。此数据库有一个表ITEMDELIVERY
,其中包含DELIVERY_DATE
列。该表由此列分区。因此,此表的主键是包含ITEMDELIVERY_ID
和DELIVERY_DATE
列的复合键。
另一个表格ITEMDELIVERYDETAIL
的FK为ITEMDELIVERY
。为了能够从分区中受益并且能够自己进行分区,此表有一列PARTITION_DATE
。 ITEMDELIVERY_ID
和PARTITION_DATE
将FK组成ITEMDELIVERY
。
PARTITION_DATE
在ITEMDELIVERYDETAIL
中没有商业含义,只是出于技术原因。因此,我想避免在我的实体中指定此列
我在IAutoMappingOverride<ItemDeliveryDetail>
的实现中尝试了以下内容:
mapping.Map(x => x.ItemDelivery.DeliveryDate).Column("PARTITION_DATE");
但这不起作用,我得到以下例外:
NHibernate.PropertyNotFoundException:在“Domain.ItemDeliveryDetail”类中找不到属性“DeliveryDate”的getter
有没有办法实现我的目标?
答案 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类映射