0
for (int i = 0; i < 1000; i++) 
{ 
     PrivateMessage privateMessage = new PrivateMessage() 
     { 
      id=i 
     }; 
     dc.PrivateMessages.InsertOnSubmit(privateMessage); 
     dc.SubmitChanges(); 
} 

此方法適用於插入1000條記錄嗎?使用LINQ插入1000條記錄

有更好的方法來做到這一點?

+3

是的,有一個更好的辦法:不使用Linq這種工作的。它不是爲此設計的。使用'SqlBulkCopy'組件進行批量插入。 –

+1

我會考慮不使用LINQ插入。你可以看看像SqlBulkCopy這樣的東西。由於性能原因,我不得不從我的一個應用程序中刪除一些LINQ插件,而是使用批量複製方法。當然,我正在處理成千上萬的記錄...... –

+0

SqlBulkCopy是一個更好的方法來做到這一點。你應該考慮使用SqlBulkCopy代替它的SqlBulkCopy優勢 – kenwarner

回答

3

Yeah--可能最好不要做你的InsertOnSubmit在一個循環。嘗試:

List<PrivateMessage> messages = new List<PrivateMessage>(); 

for (int i = 0; i < 1000; i++) 
{ 
    messages.Add(new PrivateMessage() { id=i }); 
} 

dc.PrivateMessages.InsertAllOnSubmit(messages); 
dc.SubmitChanges(); 
1

有dc.SubmitChanges()超出循環。

for (int i = 0; i < 1000; i++) 
{ 
      PrivateMessage privateMessage = new PrivateMessage() 
      { 
       id=i 
      }; 
      dc.PrivateMessages.InsertOnSubmit(privateMessage); 
} 
      dc.SubmitChanges(); 
1

這裏的另一個問題:

Enumerable.Range(1, 1000).ToList().ForEach(x =>    
      dc.PrivateMessages.InsertOnSubmit(new PrivateMessage(){id=x})); 
dc.SubmitChanges();