(仮想)銀行口座取引の一覧を保存するために、ビジネスエンティティに、例外の場合でもデータベースに保存された状態を反映させたいと思います。Repository.SaveOrUpdate()、例外で実行されるロールバックの確実性?
ここでの例外は、トランザクションがロールバックされていることも意味しますか?または、明示的にキャッチをロールバックすることはできますか?もしそうなら、その行が例外をスローすればどうなるでしょうか?いくつかのクラスで
public void SaveOrUpdate(IList<T> entityList)
{
using (ISession session = FluentNHibernateManager.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
try
{
foreach (T entity in entityList)
session.SaveOrUpdate(entity);
transaction.Commit();
}
catch (Exception e)
{
MyTrace.Exception(e.ToString());
// add this line? transaction.Rollback();
throw;
}
}
}
}
:リポジトリ< T>では
cashTransactions.Add(t);
try {
GenericRepository<CashTransaction> repo = new GenericRepository<CashTransaction>();
repo.SaveOrUpdate(cashTransactions);
} catch (Exception ex) {
cashTransactions.Remove(t);
}