我有一个使用LinqToDatasets更新/插入SQL Server CE 3.5文件的移动应用程序。
我的代码如下:
// All the MyClass Updates
MyTableAdapter myTableAdapter = new MyTableAdapter();
foreach (MyClassToInsert myClass in updates.MyClassChanges)
{
// Update the row if it is already there
int result = myTableAdapter.Update(myClass.FirstColumn,
myClass.SecondColumn,
myClass.FirstColumn);
// If the row was not there then insert it.
if (result == 0)
{
myTableAdapter.Insert(myClass.FirstColumn, myClass.SecondColumn);
}
}
此代码用于使手持数据库与服务器数据库保持同步。问题是,如果它是完整更新(例如第一次),则有很多更新(大约125)。这使得这个代码(和更多循环一样需要很长时间(我有三个这样的循环,每个循环超过30秒)。
是否有更快或更好的方式来执行此类更新/插入?
(我确实看到了这个Codeplex Project,但我看不出如何让它与更新和插入一起使用。)
答案 0 :(得分:1)
您应始终使用SqlCeResultSet在移动设备上进行数据访问,以获得最佳性能和内存使用率。您必须标识要插入的数据,然后使用类似SqlCeBulkCopy示例的代码,并使用SqlCeResultSet的Seek和Update方法使用类似的代码。