У меня проблема с несогласованностью (в моей программе) при удалении сущности с помощью Nhibernate.C# nhibernate id автоматически сбрасывается при удалении или нет?
Мне нужно хранить сущности и двоичные отношения, которые связывают их.
Вот модель:
public interface IPersistent
{
int ID { get ; set;}
}
public virtual class Entity : IPersistent {
//relations where the entity appears on the left side
public ISet<Relation> LeftRelations { get;}
//relations where the entity appears on the right side
public ISet<Relation> RightRelations { get;}
}
public virtual class Relation : IPersistent {
public Entity LeftEntity { get;}
public Entity RightEntity { get;}
public RelationType Type { get;}
// must be called before ISession.Delete()
public void ClearRelation(){
LeftEntity.LeftRelations.Remove(this);
RightEntity.RightRelations.Remove(this);
LeftEntity = null;
RightEntity = null;
}
}
мое отображение выглядит следующим образом:
<class name="Entity" table="entity">
<id column="id_entity" name"ID" unsaved-value="-1" type=Int32>
<generator class ="native">
<param name ="sequence">seq_task_id_entity</param>
</generator>
</id>
<set name="LeftRelations" table ="relation" generic="true"
cascade="all" inverse="true">
<key column="left_entity" foreign-key="id_entity"/>
<one-to-many class ="Relation"/>
</set>
<set name="RightRelations" table ="relation" generic="true"
cascade="all" inverse="true">
<key column ="right_entity" foreign-key ="id_entity"/>
<one-to-many class ="Relation"/>
</set>
</class>
<class name="Relation" table="relation" >
<id column="id_relation" name"ID" unsaved-value="-1" type=Int32>
<generator class ="native">
<param name ="sequence">seq_task_id_relation</param>
</generator>
</id>
<many-to-one name ="LeftEntity" class="Entity" cascade="all"
update="true" not-null="true">
<column name ="left_entity" sql-type="integer" not-null ="true"></column>
</many-to-one>
<many-to-one name ="RightEntity" class ="Item" cascade="all"
update="true" not-null="true">
<column name ="right_entity" sql-type="integer" not-null ="true"></column>
</many-to-one>
</class>
я может сохраняться как сущности и отношения экземпляров. Когда я удаляю постоянный объект (который не связан с каким-либо отношением), его свойство идентификатора обновляется до несохраненного значения после фиксации. Но когда я удаляю постоянное отношение, строка отношений в базе данных удаляется, но свойство отношения'ID не возвращается к несохраненному значению.
Это обычное поведение? Или это неверно?
Что именно вы подразумеваете под * "... но свойство ID остается" *? Где это свойство остается? –
Я обновил свой вопрос. Свойство ID удаляемого отношения не возвращается к несохраненному значению (-1). – tumasgiu