silme basamakla vermez Çocuğun çocuk bir sette. (Ilgili parçalar)nhibernate I (i isimlerini basitleştirilmiş) ebeveynin çocuğu ebeveyn bir dizi</b><br> & çocuğun çocuk ebeveynin çocuğun <b>Veli adında ve 3 nesneleri</p> <p>, senaryo aşağıdaki gibidir çocuklara
ebeveyn şöyle
haritalama olan
<set name="parentset"
table="pc-table"
lazy="false"
fetch="subselect"
cascade="all-delete-orphan"
inverse="true">
<key column=FK_ID_PC" on-delete="cascade"/>
<one-to-many class="parentchild,parentchild-ns"/>
</set>
ebeveynin çocuğu
<set name="childset"
table="cc-table"
lazy="false"
fetch="subselect"
cascade="all-delete-orphan"
inverse="true">
<key column="FK_ID_CC" on-delete="cascade"/>
<one-to-many class="childschild,childschild-ns"/>
</set>
Ne ben başarmak istediğim i ebeveyn sildiğinizde, bir olacağını kaskatı çocuğun çocuğuna tüm yolu silin. Ama şu anda olan şey bu.
(bu haritalama testi amaçları içindir) bir üst varlık alma (iyi çalışıyor) artık
IQuery query = session.CreateQuery("from Parent where ID =" + ID);
IParent doc = query.UniqueResult<Parent>();
silme bölümü
session.Delete(doc);
transaction.Commit();
'null değeri ekleyemezsiniz' çözüldü ettikten sonra Basamaklı ve ters hata, bunun şimdi bu kodla her şeyi sileceğini umuyorum, ancak sadece ebeveyn siliniyor.
i kaçırılmaması gereken muhtemeldir benim haritalama şey kaçırmak mı? Doğru yönde herhangi bir ipucu, daha fazla hoş geldiniz!Diego, yanıt için teşekkürler. (ve açıklama)
on-delete="cascade"
'u kaldırmaya gittim, çünkü kodda olabildiğince fazla denetim yapmayı ve veritabanında bulunmamayı seviyorum.
aşağıda yayınlanmıştır kodunu (çalışma) sonucudur.
ebeveyn
<set name="parentset"
table="pc-table"
cascade="all-delete-orphan"
inverse="true"
batch-size="5">
<key column=FK_ID_PC"/>
<one-to-many class="parentchild,parentchild-ns"/>
</set>
ebeveynin çocuğu
<set name="childset"
table="cc-table"
cascade="all-delete-orphan"
batch-size="5"
inverse="true">
<key column="FK_ID_CC">
<one-to-many class="childschild,childschild-ns"/>
</set>
Umut bu aynı sorunla insanlara yardım!