实体框架 - 检索由savechanges创建的ID

时间:2010-12-01 16:21:16

标签: entity-framework

对于昨天提出相关问题表示歉意,但经过一段时间的睡眠我已经简化了我的问题。

在下面的示例中,我遍历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中的输出语句所做的事情。

1 个答案:

答案 0 :(得分: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自动更新,而不再执行任何操作。只是检查现场!