我有一个处理某些客户信息的Xamarin(C#)Android应用程序。我有一个下面的方法正在从SQLite数据库中读取(连接存储在全局变量 globalVars.Db 中),这是特定客户的一些引号(名称存储在另一个全局变量 globalVars.Customer )。 给定我要传递给此方法的数字 n ,我只是想用更多通用名称(例如“ 默认客户1 ”,“ 默认客户2 ”等)。 下面的代码可以正常工作,但是似乎相对较慢,尤其是当n为3或更大时。 有没有更有效的方法来实现我的目标?
private void cloneCustomer(int n)
{
var tableQuotes = from d in globalVars.Db.Table<dbQuotes>()
where d.CustomerName == globalVars.Customer
select d;
for (int i = 1; i <= n; i++)
{
foreach (var quote in tableQuotes)
{
quote.CustomerName = "Default customer " + i;
globalVars.Db.Insert(quote);
}
}
}
答案 0 :(得分:1)
将insert循环块包装为单个事务
private void cloneCustomer(int n)
{
var tableQuotes = from d in globalVars.Db.Table<dbQuotes>()
where d.CustomerName == globalVars.Customer
select d;
globalVars.Db.RunInTransaction(() => {
for (int i = 1; i <= n; i++) {
foreach (var quote in tableQuotes){
quote.CustomerName = "Default customer " + i;
globalVars.Db.Insert(quote);
}
}
});
}