Как сохранить несколько строк в таблице ключ-значение в sqlite? - PullRequest
0 голосов
/ 15 февраля 2019

Я написал в своем приложении функцию для добавления нескольких строк в sqlite в таблицу.

Таблица создана как:

CREATE TABLE KeyValueTable ( ObjectName TEXT PRIMARY KEY NOT NULL, ObjectValue BLOB)

Функция:

private bool Set(IEnumerable<(string key, object value, Type type)> collection)
{
    try
    {
        using (var connection = CreateConnection())
        {
            connection.Open();
            using (var transaction = connection.BeginTransaction())
            {
                foreach (var item in collection)
                {
                    var serialized = Newtonsoft.Json.JsonConvert.SerializeObject(item.value, item.type, null);
                    using (var command = connection.CreateCommand())
                    {
                        command.CommandText = @"INSERT OR REPLACE INTO KeyValueTable VALUES (@ObjectName, @ObjectValue)";
                        command.Parameters.Add(new SQLiteParameter("@ObjectName", item.key));
                        command.Parameters.Add(new SQLiteParameter("@ObjectValue", serialized));

                        try
                        {
                            command.ExecuteNonQuery();
                        }
                        catch (InvalidOperationException)
                        {
                            transaction.Rollback();
                            return false;
                        }

                    } // using
                } // foreach

                transaction.Commit();
                return true;
            } // using
        }
    }
    catch (SQLiteException)
    {
        return false;
    }
}

Не уверен, что это лучший способ, так как я создаю команду для элемента в коллекции.

Есть ли более эффективный способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...