我有一个Donations表,其中包含一个与Campaigns表相关联的CampaignID列。如果Campaign未被用于此捐赠,我需要在CampaignID列中插入0而不是Null。
我的Donations表映射如下:
<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" />
在保存到数据库之前,我会检查我的捐赠实体中的活动实体是否为空。如果是,则将其设置为新的活动实体,并将活动ID设置为0,如下所示。
if (null == donation.FundraisingCampaign)
{
donation.FundraisingCampaign = new Campaign() {CampaignID = 0};
}
问题在于我在保存时收到一个错误消息"对象引用未保存的瞬态实例-在刷新之前保存瞬态实例。"
我不明白为什么它关心我Campaign对象上的任何内容,除了CampaignID之外,因为我已经设置了cascade="none",它不应该尝试将任何内容保存到Campaign表中。
由于当前系统的限制,我被迫在那里设置0而不是Null,因此无法保存Null。