2014-02-07 69 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