我需要使用c#运行一次操作:
它比下面的代码复杂得多但仍然如此 像这样的东西:
using (DB1DataContext db1 = new DB1DataContext())
{
int count = db1.tbale1.Count();
int currentIndex = 0;
while (currentIndex < count)
{
var obj= db1.table1s.Take(1).Skip(currentIndex).FirstOrDefault();
using (DB2DataContext db2 = new DB2DataContext())
{
tableA tb = new table1();
db2.tableAs.InsertOnSubmit(tb);
db2.SubmitChanges();
}
currentIndex++;
}
}
一个循环大约需要500毫秒,循环次数约为15000,这意味着操作大约需要125分钟。
这会起作用还是存在某些问题?
编辑:正如我之前提到的,只是想知道是否有任何时间限制将停止操作
答案 0 :(得分:0)
超时,因为您一次只执行一次SubmitChanges。基本上,这将为每条记录执行一次交易。
所以它会起作用,但它可以更有效率。
将第二个datacontext的创建移出循环。为什么你甚至使用两个?
移动db2.SubmitChanges();跳出循环。但是,这确实意味着您将遇到超时问题,但速度会更快。
在db1.tbale1上做一个foreach,因为现在你的skip + take会使它在数据库方面非常低效。你正在艰难地抓取一条记录。
PS - 由于你没有在本节中获得任何特定的linq-2-sql好处,你可以在这部分中删除linq并使用SQLBulkCopy,它会更快一些