获取Entity Framework中最近插入的行的Id

时间:2017-09-08 16:32:26

标签: c# sql entity-framework

我是基于以下帖子将行批量插入表(其中有一个标识列,每次插入新行时自动递增)

https://stackoverflow.com/a/5942176/3861992

插入所有行后,如何获取最近插入的行的ID列表?

由于

3 个答案:

答案 0 :(得分:4)

在插入实体和EntityFrameWork(EF)之后

SaveChanges()设置Id的值。
假设您要输入数据库的实体如下:

 public class EntityToInsert
  {
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
  }

并且您想要插入实体列表:

 var list = new List<EntityToInsert>()
        {
            new EntityToInsert() {Name = "A", Age = 15},
            new EntityToInsert() {Name = "B", Age = 25},
            new EntityToInsert() {Name = "C", Age = 35}
        };
        foreach (var item in list)
        {
            context.Set<EntityToInsert>().Add(item);
        }
        context.SaveChanges();
       // get the list of ids of the rows that are recently inserted
        var listOfIds=list.Select(x => x.Id).ToList();

我希望这会有所帮助。

答案 1 :(得分:3)

当所有行都真正插入数据库时​​(在Entity Framework中调用SaveChanges()之后),将填充这些行的实际ID。

因此,在SaveChanges()之后,您将在插入的对象中找到ID而不进行任何查询。

答案 2 :(得分:1)

试试这个: dbcontext.Entry([object])。GetDatabaseValues();

这是一行。如果我此时的互联网连接速度不是很慢,我会查看文档,看看是否很容易获得多行。至少,您可以遍历数据库对象列表并获取每个条目值。然而,这可能不是最快的解决方案。