我是基于以下帖子将行批量插入表(其中有一个标识列,每次插入新行时自动递增)
https://stackoverflow.com/a/5942176/3861992
插入所有行后,如何获取最近插入的行的ID列表?
由于
答案 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();
这是一行。如果我此时的互联网连接速度不是很慢,我会查看文档,看看是否很容易获得多行。至少,您可以遍历数据库对象列表并获取每个条目值。然而,这可能不是最快的解决方案。