我有以下FluentNHibernate映射:
public AssetMap()
{
Table("PRASSET");
Id(x => x.Id).Column("PRA_RECNUM").GeneratedBy.Sequence("PRA_RECNUM_GEN");
...fields mapped from PRASSET table
Join("PRSTOCK", m =>
{
m.Fetch.Join();
m.Optional();
m.KeyColumn("PRS_ASSRN");
...fields mapped from PRSTOCK table
});
}
正如m.Optional()
位中Join
次调用所示,可能会有或可能没有相应的PRSTOCK
记录。
我遇到的问题是,当我保存一个Asset
实例时,该实例只有一个PRASSET
- 映射的属性是脏的,并且没有相应的PRSTOCK
记录,它插入一个!这显然不是我想要发生的事情,因为在大多数情况下不应该有相应的PRSTOCK
记录。
我可以尝试在映射配置中进行调整吗?在这个阶段只是为了防止记录被插入PRSTOCK
就足够了,但理想情况下NHibernate不应该尝试更新或插入PRSTOCK
,除非Asset
实例的某个属性映射到{ {1}}已经弄脏了。
答案 0 :(得分:0)
根据this博客文章,如果属性不为null,NHibernate将始终尝试插入连接映射记录。所以我已经使适当的属性可以为空(默认为null),并希望它不会再尝试插入。