Оптимальный способ обновления столбца 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, Каждый раз, когда нужно сделать запрос к базе данных и получить объект статьи медленно. Так есть ли более оптимальный способ сделать то, что я хочу.

0 ответов

Другие вопросы по тегам