をスロー保存し、その後削除、保存は、私のテストケースである:NHibernateは:同じエンティティがここStaleStateException
[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);
}
}
}
Idsがハイローによって生成されます。
2回目に保存する前にエンティティのIDに0を代入すると、この単純なケースでは機能しますが、1対多の関係を持つより複雑なシナリオでは機能しません(例外は「コレクション親エンティティを削除しようとしたときに「セッションに関連付けられていない所有者」)。
これを機能させる方法はありますか? (同じエンティティを再度保存して保存しないでください)
削除後に保存しようとしているのはなぜですか? – UpTheCreek
これはWPFアプリケーションであり、画面ごとにセッションを使用しています。このエンティティはデータグリッドで使用され、チェックボックスをオフにするとチェックボックスが削除されます。私はまだそれがデータベースから削除された後にバインディングのためにそれが必要です。ユーザーが再度チェックして「保存」ボタンを押すと、データベースに再保存されます。 –
柔らかい削除のようなサウンドはそれをよりきれいにするでしょう。 – UpTheCreek