2014-02-07 65 views
0

我想要在DB中添加新行後獲取所有ID。如何獲取插入ID的列表?

我試過,但給了我一個例外 - >返回0標識

foreach (var s in ss) 
{ 
    Table t1 = new Table(); 

    ... 
    ... 

    _entities.Table.Add(t1); 

    Ids.Add(ID); // <--- trying to get Ids here. 
} 

_entities.SaveChanges(); 

TIA

+0

一旦你插入和保存,你的實體對象都會有自己的標識。我想這就是你要求的。 –

回答

3

一般來說,你的實體將有一個ID屬性,它更新後打電話SaveChanges()。所以,你可以這樣做:

List<int> Ids = new List<int>(); 
foreach (var s in ss) 
{ 
    Table t1 = new Table(); 
    ... 
    _entities.Table.Add(t1); 
    _entities.SaveChanges(); 

    Ids.Add(t1.ID); 
} 

或者這樣:

List<Table> insertedTables = new List<Table>(); 
foreach (var s in ss) 
{ 
    Table t1 = new Table(); 
    ... 
    _entities.Table.Add(t1); 

    insertedTables.Add(t1); 
} 
_entities.SaveChanges(); 

List<int> Ids = insertedTables.Select(t => t.ID).ToList(); 
+0

感謝您的快速回復。我嘗試了第一個,但它給了我一個異常'{「不允許新的事務,因爲會話中還有其他線程正在運行。」} – Lakhae

+0

@Lakhae您可能需要在這種情況下進行其他調整,但沒有看到完整的背景很難說。第二個爲你工作嗎? –

+0

它的工作。非常感謝。週末愉快。 – Lakhae