Я написал в своем приложении функцию для добавления нескольких строк в 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;
}
}
Не уверен, что это лучший способ, так как я создаю команду для элемента в коллекции.
Есть ли более эффективный способ сделать это?