私には、キャンペーンテーブルに関連するCampaignID列を持つ寄付テーブルがあります。この寄付にキャンペーンが使用されていない場合は、Nullの代わりにCampaignID列に0を挿入する必要があります。私は私が私の寄付エンティティのキャンペーンエンティティがnullであるかどうかをチェックし、データベースに保存する前にNHibernate nullの代わりに0から多対1の列を保存する
<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得るということである「オブジェクトが保存されていない一時的なインスタンスを参照します - 。フラッシュする前に、一時的なインスタンスを保存します」保存しようとすると。
私はカスケード= "none"があるため、キャンペーンテーブルに何も保存しようとするべきではないため、CampaignID以外の私のキャンペーンオブジェクトの何かを気にしません。
現在のシステムでは、Nullの代わりに0を設定しなければならないため、Nullを保存することはできません。
私は私に保存されていない値を設定し-1、すべての私のコードは、新しいものを作成するために、-1にCAMPAIGNIDを設定するように更新。私は今Nullではなく私のCampaignIDに0を持っています。ありがとうございました。 – Adam
nullableを使用する方が簡単でした。 –