编辑别人的代码,我想知道在使用for循环和InsertOnSubmit时,是否在循环内部或外部调用了submitchanges。
即:
foreach (string t in newTags)
{
Tag q_tag = new Q_Tag();
q_tag.Q_ID = updated.Q_ID;
q_tag.Tag_Name = t;
TheData.Q_Tags.InsertOnSubmit(q_tag);
TheData.SubmitChanges();
}
相反:
foreach (string t in newTags)
{
Tag q_tag = new Q_Tag();
q_tag.Q_ID = updated.Q_ID;
q_tag.Tag_Name = t;
TheData.Q_Tags.InsertOnSubmit(q_tag);
}
TheData.SubmitChanges();
答案 0 :(得分:2)
为数据库打开一个新连接,并在第一个函数调用结束时关闭。在第二个代码中,在所有操作之后打开和关闭单个连接。第二个比第一个快得多。您可以稍后自己尝试,但我的测试显示速度变化率接近30%。
答案 1 :(得分:0)
你可以这样做。阅读MSDN中的这篇简短的文章http://msdn.microsoft.com/en-us/library/bb399378.aspx你应该在循环之外做这个,所以你只做一次。这应该是最好的表现。
答案 2 :(得分:0)
我会说在循环之外。来自DataContext.SubmitChanges MSDN entry:
计算要插入,更新或修改的修改对象的集合 删除,并执行适当的命令来实现 更改数据库。
因此,考虑到这一点,在循环之外执行它会更有效,因为该方法将通过一次调用插入所有对象。