我有一個表格有與Campaigns Table相關的CampaignID列的Donations。如果Campaign未用於此捐贈,我需要在CampaignID列中插入0而不是Null。NHibernate保存0到多對一的列而不是空的
我從捐款表映射是這樣的:
<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" />
之前,我保存到數據庫中我檢查,看看是否活動實體上我的捐贈實體爲空。如果是這樣,那麼我將它設置爲一個新的活動實體,並像這樣設置CampaignID = 0。
if (null == donation.FundraisingCampaign)
{
donation.FundraisingCampaign = new Campaign() {CampaignID = 0};
}
問題是我得到一個ErrorMessage「對象引用未保存的瞬態實例 - 在沖洗前保存瞬態實例。」當試圖保存。
我不明白爲什麼它關心我的Campaign對象而不是CampaignID,因爲我有cascade =「none」它不應該嘗試將任何內容保存到Campaign表中。
我被當前系統強制設置爲0而不是Null,因此保存Null不是一個選項。
我我未保存值設置爲-1,更新了所有我的代碼現在設置的CampaignID爲-1,以創建一個新的。我現在在我的CampaignID中有0個而不是Null。感謝諾埃爾。 – Adam 2009-04-21 21:37:45