public void Save(Diff diff) { _database.Instance().Connection().Open(); using var transaction = _database.Instance().Connection().BeginTransaction(); try { if (!_database.Instance().Present()) { _database.Instance().Create(); } if (diff.PresentIn(_database.Entities().Works())) { throw new InvalidOperationException("The diff is already added."); } diff.AddTo(new DefaultEntityFactory(_database.Entities(), _formula)); transaction.Commit(); } catch { transaction.Rollback(); throw; } finally { _database.Instance().Connection().Close(); } }