2010-12-31 23 views
0

親と子供がいます。 (子コレクションと一緒に)親を取り出し、子の値を変更してsession.SaveOrUpdate(Digikeyset)を実行すると、すべての値が子レコードで更新されますが、FK列は子でNULLに更新されています。nhibernateコレクションの更新子のfk参照が更新時にnullになっています

<class name="Digikeyset" table="`digikeyset`" lazy="false"> 
<id name="Iddigikeyset" column="`iddigikeyset`" type="int"> 
    <generator class="native" /> 
</id> 
<property type="string" length="100" name="Mpart" column="`mpart`" /> 
<property type="int" name="Boardqty" column="`boardqty`" /> 
<bag name="Fkdigirowset" inverse="false" lazy="false" cascade="all" > 
    <key column="`iddigiset`" /> 
    <one-to-many class="bomorderDal.Digikeyrow,bomorderDal" /> 
</bag> </class> 

<class name="Digikeyrow" table="`digikeyrow`" lazy="false"> 
<id name="Iddigikeyrow" column="`iddigikeyrow`" type="int"> 
    <generator class="native" /> 
</id> 
<property type="Boolean" name="Ispartselected" column="`ispartselected`" /> 
<property type="Boolean" name="Ispartfound" column="`ispartfound`" /> 
<many-to-one name="Iddigiset" cascade="save-update" column="`iddigiset`" /> 
    </class> 
+0

書式を正しく入力してください。 – Lukasz

答えて

0

これは問題ではありませんが、値を変更する場合は、SaveOrUpdateをフラッシュしないでください。保存は新しいオブジェクト用、更新はセッションに接続されていない既存のオブジェクト用です。

ので、代わりの:

session.SaveOrUpdate(Digikeyset) 

試してみてください。提案のための

session.Flush() 
+0

提案していただきありがとうございます。これを試していた。最後に結果を得ました。 – Lakshmish

0

感謝。提案されたオプションで試してみたが運がなかった。

最後に結果が得られました。削除されました

<many-to-one name="Iddigiset" cascade="save-update" column="`iddigiset`" /> 

子供からは、そのトリックでした。ところで、私は中信頼環境に必要なNhibernateライブラリを使用しています。

関連する問題