FluentHibernate: как указывать таблицу сопоставления никогда не следует вставлять в - PullRequest
0 голосов
/ 06 июня 2011

У меня есть следующее отображение 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, сопоставленное с PRSTOCK, не загрязнено.

1 Ответ

0 голосов
/ 06 июня 2011

Согласно этому сообщению в блоге, NHibernate всегда будет пытаться вставить сопоставленные записи, если свойства не равны NULL. Поэтому я сделал соответствующие свойства равными NULL (по умолчанию NULL) и, надеюсь, он больше не будет пытаться вставить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...