void WithModel(Action <IModel> handleModel) { if (Transaction.Current != null) { if (transactionManager == null) { var model = connection.CreateModel(); model.TxSelect(); transactionManager = new AmbientTxHack( () => { model.TxCommit(); transactionManager = null; ambientModel = null; }, () => { model.TxRollback(); transactionManager = null; ambientModel = null; }, model); handleModel(model); ambientModel = model; } else { handleModel(ambientModel); } } else { using (var model = connection.CreateModel()) { handleModel(model); } } }
void WithModel(Action<IModel> handleModel) { if (Transaction.Current != null) { if (transactionManager == null) { var model = connection.CreateModel(); model.TxSelect(); transactionManager = new AmbientTxHack( () => { model.TxCommit(); transactionManager = null; ambientModel = null; }, () => { model.TxRollback(); transactionManager = null; ambientModel = null; }, model); handleModel(model); ambientModel = model; } else { handleModel(ambientModel); } } else { using (var model = connection.CreateModel()) { handleModel(model); } } }