У меня есть таблица Donations, в которой есть столбец CampaignID, который относится к таблице Campaigns. Мне нужно вставить 0 в столбец CampaignID вместо Null, если кампания не используется для этого пожертвования.
Мои сопоставления из таблицы пожертвований выглядят так:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">
<class name="Donation,Entities" lazy="true" table="Donations" dynamic-update="true" >
<id name="DonationID" column="PledgeID" type="Int64">
<generator class="native" />
</id>
<many-to-one name="FundraisingCampaign" class="Campaign, Entities" column="CampaignID" lazy="proxy" not-found="ignore" cascade="none" />
Перед сохранением в базе данных я проверяю, является ли объект Campaign в моем объекте пожертвования нулевым. Если это так, тогда я устанавливаю для него новый объект Campaign и устанавливаю CampaignID = 0 следующим образом.
if (null == donation.FundraisingCampaign)
{
donation.FundraisingCampaign = new Campaign() {CampaignID = 0};
}
Проблема в том, что я получаю сообщение ErrorMessage «объект ссылается на несохраненный временный экземпляр - сохраните этот временный экземпляр перед сбросом». при попытке сохранить.
Я не понимаю, почему он заботится о чем-либо на моем объекте Campaign, кроме CampaignID, потому что у меня есть cascade = "none", он не должен пытаться что-либо сохранить в таблице Campaign.
Нынешняя система вынуждает меня также установить 0 вместо Null, поэтому сохранение Null не вариант.