3

编辑其他人的代码,我想知道在使用 for 循环和 InsertOnSubmit 时,submitchanges 调用是进入循环内部还是外部。

IE:

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();
4

3 回答 3

2

一个新的连接打开到数据库,并在第一个函数调用结束时关闭。在第二个代码中,在所有操作之后打开和关闭单个连接。第二个比第一个快得多。您可以稍后自己尝试,但我的测试显示近 %30 的速度变化。

于 2013-05-23T17:53:10.467 回答
0

你可以做任何一种方式。阅读来自 MSDN http://msdn.microsoft.com/en-us/library/bb399378.aspx的这篇简短文章您可能应该在循环之外执行此操作,因此您只需执行一次。那应该提供最佳性能。

于 2013-05-23T17:51:21.773 回答
0

我会说在循环之外。从DataContext.SubmitChanges MSDN 条目

计算要插入、更新或删除的修改对象,并执行适当的命令来实现对数据库的更改。

因此,考虑到这一点,在循环之外执行此操作会更有效,因为该方法将通过一次调用插入所有对象。

于 2013-05-23T17:51:29.743 回答