2010-12-01 49 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