public void RunInTransaction(Action inTransaction)
 {
     using (Connection.Lock())
     {
         Connection.RunInTransaction(inTransaction);
     }
 }
Beispiel #2
0
        public void UpdateToLatestVersion()
        {
            var context = Mvx.Resolve <UpdateContext>();

            context.Connection = _connection;
            var version = GetCurrentVersion();
            var updates = GetPendingUpdates(version);

            foreach (var update in updates)
            {
                var meta = update.Item2;
                var code = update.Item1;
                Trace($"Applying updated #{meta.Version} [{meta.Tag}]...");
                using (_connection.Lock())
                {
                    _connection.RunInTransaction(() =>
                    {
                        code.Apply(context);
                        var row = new VersionRow {
                            Tag = meta.Tag, Timestamp = new DateTime(), Version = meta.Version
                        };
                        _connection.Insert(row);
                    });
                }
                Trace($"Update #{meta.Version} [{meta.Tag}] was successfully applied.");
            }
        }
Beispiel #3
0
        public void RemoveRecipe(int id)
        {
            if (_isDisposed)
            {
                throw new ObjectDisposedException(nameof(RecipePersistenceService));
            }
            using (_connection.Lock())
            {
                _connection.RunInTransaction(() =>
                {
                    //Remove all fields
                    var mapping = _connection.GetMapping <RecipeTextFieldRow>();
                    _connection.Execute($"DELETE FROM {mapping.TableName} WHERE RecipeId = ?", id);

                    //Remove recipe
                    _connection.Delete <RecipeRow>(id);
                });
            }
        }