2010-12-31 5 views
0

부모와 자식이있어 잘 삽입됩니다! (자식 컬렉션과 함께) 부모를 검색하고 자식 값을 수정하고 session.SaveOrUpdate (Digikeyset)를 수행하면 자식 레코드에서 모든 값이 업데이트되지만 FK 열은 자식에서 NULL로 업데이트됩니다.nhibernate 컬렉션 업데이트 자식 업데이트 자식 참조가 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 라이브러리를 사용하고 있습니다.

관련 문제