Оптимальный способ обновления столбца sqlite в цикле foreach с использованием транзакции (Xamarin.Android)
У меня есть следующее ViewModel
:
public class OrderArticleViewModel
{
......
public string ArticleId { get; set; }
public string ArticleQuantity { get; set; }
......
}
И следующая модель:
[Table("articles")]
public class Article
{
....
[Column("id")]
public string Id { get; set; }
[Column("quantity")]
public decimal Quantity { get; set; }
....
}
я имею List<OrderArticleViewModel> orderArticles
который я перебираю:
foreach(OrderArticleViewModel orderArticle in orderArticles)
{
//Here I want to make article table column quantity to have
//value its current value minus orderArticle.Quantity
}
Я нашел два способа сделать это:
connection.Execute("UPDATE" + tableName + "SET columnName -= ? Where Id = ?", id, value);
а также
Article article = connection.Table<Article>().Where(x.Id == id).Select(x => x.Quantity);
article.Quantity -= orderArticles.ArticleQuantity;
connection.Update(article);
Первый способ не имеет хитов. Второй способ очень медленный, когда у меня слишком много элементов orderArticles
, Каждый раз, когда нужно сделать запрос к базе данных и получить объект статьи медленно. Так есть ли более оптимальный способ сделать то, что я хочу.