Вот мой тестовый пример:
[Test, Explicit]
public void SaveDeleteSaveThrowsTest()
{
Produit produit = new Produit { Libelle = "Test" };
using (ISession session = this.SessionProvider.OpenSession())
{
session.FlushMode = FlushMode.Auto;
using (ITransaction transaction = session.BeginTransaction())
{
session.SaveOrUpdate(produit);
transaction.Commit();
}
using (ITransaction transaction = session.BeginTransaction())
{
session.Delete(produit);
transaction.Commit();
}
using (ITransaction transaction = session.BeginTransaction())
{
session.SaveOrUpdate(produit);
Assert.Throws(typeof(StaleStateException), transaction.Commit);
}
}
}
Идентификаторы генерируются HiLo.
Если я присваиваю 0 идентификатору объекта перед его сохранением во 2-й раз, он работает в этом простом случае, но не работает в более сложных сценариях, где у меня есть отношение один ко многим (я получаю исключение), владелец коллекции не связан с сеансом "при попытке удалить родительский объект).
Есть ли способ заставить его работать? (сохранить, удалить сохранить снова тот же объект)