Категория и подкатегория имеют отношение 1 ко многим.В режиме обновления для категории я хочу удалить все существующие подкатегории и заново вставить новую (как того требует сценарий).Удаление происходит нормально, однако новые дочерние записи дублируются (если у меня есть 2 новые записи для дочерних, операция вставляет 2 + 2 записи)
ISession session = NHibernateHelper.GetCurrentSession().GetSession(EntityMode.Poco);
using (var tx = session.BeginTransaction())
{
List<Vtsubcategory> oovtsc = new List<Vtsubcategory>();
oovtsc = oVtcategory.FkTocategory.Where(e => e.IdvtSubCategory != 0).ToList();
foreach (Vtsubcategory ooVtsubcategory in oovtsc)
{
oVtcategory.FkTocategory.Remove(ooVtsubcategory);
session.Delete(ooVtsubcategory);
}
session.SaveOrUpdateCopy(oVtcategory);
session.Flush();
if (tx.IsActive)
{
tx.Commit();
}
}
Я полагаю, это вставка дочерних записей вРежим сохранения (для ребенка как новый) и вставка еще 2 в режиме обновления (родительский).Не уверен, что это правда, и как это исправить.
отображение равно
<class name="Vtcategory" table="`vtcategory`" lazy="false">
<id name="IdvtCategory" column="`idvtCategory`" type="int">
<generator class="native" />
</id>
<property type="string" length="100" name="Catname" column="`catname`" />
<property type="string" length="45" name="Catshortname" column="`catshortname`" />
<property type="DateTime" name="Crdt" column="`crdt`" />
<property type="string" length="45" name="Crby" column="`crby`" />
<bag name="FkTocategory" inverse="false" lazy="true" cascade="all">
<key column="`catid`" />
<one-to-many class="AMSDAL.Vtsubcategory,AMSDAL" />
</bag>
<class name="Vtsubcategory" table="`vtsubcategory`" lazy="false">
<id name="IdvtSubCategory" column="`idvtSubCategory`" type="int">
<generator class="native" />
</id>
<property type="string" length="100" name="Subcatname" column="`subcatname`" />
<property type="string" length="45" name="Subcatshortname" column="`subcatshortname`" />
<property type="DateTime" name="Crdt" column="`crdt`" />
<property type="string" length="45" name="Crby" column="`crby`" />
<many-to-one name="Catid" cascade="none" column="`catid`" />