流畅的nHibernate:如何指定连接映射表永远不应插入

时间:2011-06-06 10:12:40

标签: nhibernate join fluent-nhibernate

我有以下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}}已经弄脏了。

1 个答案:

答案 0 :(得分:0)

根据this博客文章,如果属性不为null,NHibernate将始终尝试插入连接映射记录。所以我已经使适当的属性可以为空(默认为null),并希望它不会再尝试插入。