예제 #1
0
        public static async Task UpsertAsync(Settings settings, SqliteCommand parentCmd = null)
        {
            using (var database = parentCmd?.Connection == null ? await Orm.GetDatabaseAsync() : null)
            {
                var db = database ?? parentCmd.Connection;

                using (var transaction = parentCmd?.Transaction == null ? db.BeginTransaction() : null)
                {
                    var t = transaction ?? parentCmd.Transaction;

                    using (var cmd = new SqliteCommand(string.Empty, db, t))
                    {
                        // Amend.
                        AmendParameters(settings, cmd);
                        cmd.GenerateUpsert(nameof(Settings));

                        // Upsert our foreign key components, if any.

                        // Execute.
                        await cmd.ExecuteNonQueryAsync();

                        // Upsert other components, if any.

                        // Commit, if we newly created the transaction.
                        transaction?.Commit();
                    }
                }
            }
        }
예제 #2
0
        public static async Task <Settings> ReadAsync()
        {
            Settings result = null;

            using (var db = await Orm.GetDatabaseAsync())
            {
                using (var cmd = new SqliteCommand($"SELECT * FROM {nameof(Settings)} LIMIT 1", db))
                {
                    using (var query = await cmd.ExecuteReaderAsync())
                    {
                        var row = query.ReadValues();

                        if (row.Any())
                        {
                            result = Map(new Settings(), row.First());
                        }
                    }
                }
            }

            return(result);
        }