2010-12-01 47 views
1

昨天詢問相關問題的道歉,但經過一些睡眠之後,我簡化了我的問題。實體框架 - 檢索由savechanges創建的ID

在下面的示例中,我循環訪問objectquery sourcetable並將行添加到Positions表中。在添加所有新行並保存更改後,將創建主鍵(整數標識列)。

foreach (var row in sourcetable) 
     { 
      var newpos = new Positions() 
       { 
        Field1 = row.field, 
        Field2 = row.field2, 
        Field3 = row.field3 

       }; 

     } 

    Entities.savechanges 

在EF 3.5中,是否可以訪問由上述過程添加的所有主鍵列表?說一些類似於在T-sql中使用輸出語句可以做的事情。

回答

2

當然 - 你需要做的是掛在那些你要保存的實體的列表,然後檢查他們,他們已經被保存後:

List<Positions> _newItems = new List<Positions>(); 

foreach (var row in sourcetable) 
{ 
    var newpos = new Positions() 
    { 
     Field1 = row.field, 
     Field2 = row.field2, 
     Field3 = row.field3 

    }; 

    _newItems.Add(newpos); 

} 

Entities.SaveChanges(); 

foreach(Positions p in _newItems) 
{ 
    Console.WriteLine("ID for new item is: {0}", p.ID); 
} 

項目已經經過保存,它們代表INT IDENTITY字段的字段應該由EF自動更新,而不需要做更多的事情。只要檢查該領域!

+0

啊,我明白了。謝謝你,非常有用的技術。 – baffled68 2010-12-02 17:49:36