2011-06-01 68 views
0

我有一個包含我的數據上下文類:的LINQ to SQL(VS 2010) - 插不工作

private static drDataContext db = new drDataContext(); 

我也有方法:

public static void InsertSelfRatings(List<DeveloperSelfRating> ratings) 
    { 

     foreach (DeveloperSelfRating sr in ratings) 
     { 
      db.DeveloperSelfRatings.InsertOnSubmit(sr); 
     } 

     // db.DeveloperSelfRatings.InsertAllOnSubmit(ratings); 

     db.SubmitChanges(); 
    } 

我都嘗試InsertOnSubmit( )和InsertAllOnSubmit(),我遇到了同樣的問題 - 只有'rating'列表中的最後一條記錄(DeveloperSelfRating對象)被插入到數據庫中。

這個問題的原因是什麼?

謝謝!

+2

檢查你的收視率集合是否有記錄超過1,所有不同... – 2011-06-01 14:08:00

+0

看看這篇文章 - 我認爲它可能會流露出一些光: http://social.msdn。 microsoft.com/Forums/en-US/linqprojectgeneral/thread/994e75cb-f651-4a2a-aa4a-39de7fa2fd1b – lhan 2011-06-01 14:08:45

+0

嘗試返回到InsertAllOnSubmit。這應該工作。如果不是,請查看配置文件並查看正在生成的SQL。您添加的評分是全新的?你的數據庫是否使用Identity作爲PK? – Pleun 2011-06-01 14:17:36

回答

0

你只是把這一行db.SubmitChanges();在foreach循環就像

公共靜態無效InsertSelfRatings(列表評級)

{

foreach (DeveloperSelfRating sr in ratings) 
    { 
     db.DeveloperSelfRatings.InsertOnSubmit(sr); 
     db.SubmitChanges(); 

    } 



} 

因爲當u插入一條記錄在LINQ你必須這樣做後,每插入你寫提交更改db.SubmitChanges(); 只是試試這個確定

+0

'因爲當你在linq中插入一條記錄時,你必須提交更改'< - 不正確,Linq to SQL保留一個內部更改列表,所以你可以在最後提交。 – 2011-06-06 04:15:35

+0

@Michael Stum:但是如果我們必須通過創建列表來插入所有記錄,那麼我們必須編寫InsertAllOnSubmit() – 2011-06-06 04:21:58