C# XamarinAndroid:创建SQLite DB表中某些条目副本的有效方法
我有一个Xamarin C Android应用程序,可以处理一些客户信息。我使用以下方法从SQLite DB读取连接存储在全局变量globalVars.DB中,并使用另一个全局变量globalVars.customer中存储的名称为特定客户提供一些引号。 给定我传递给这个方法的数字n,我只想在用更通用的名称(如默认客户1、默认客户2等)替换客户名称后,将此客户信息的n个副本创建到DB的同一个表中。 下面的代码按预期工作,但似乎相对较慢,尤其是当n为3或更多时。 有没有更有效的方法来实现我的目标C# XamarinAndroid:创建SQLite DB表中某些条目副本的有效方法,c#,sqlite,xamarin,xamarin.android,android-sqlite,C#,Sqlite,Xamarin,Xamarin.android,Android Sqlite,我有一个Xamarin C Android应用程序,可以处理一些客户信息。我使用以下方法从SQLite DB读取连接存储在全局变量globalVars.DB中,并使用另一个全局变量globalVars.customer中存储的名称为特定客户提供一些引号。 给定我传递给这个方法的数字n,我只想在用更通用的名称(如默认客户1、默认客户2等)替换客户名称后,将此客户信息的n个副本创建到DB的同一个表中。 下面的代码按预期工作,但似乎相对较慢,尤其是当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);
}
}
}
将插入循环块包装到单个事务中
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);
}
}
});
}
谢谢你的回答。这个更改会做什么?这将把每个插入的事务调用从循环包装到单个事务中。这将加快插入过程