【发布时间】:2017-09-08 16:32:25
【问题描述】:
我根据以下帖子将行批量插入到表中(该表有一个标识列,每次插入新行时都会自动递增)
https://stackoverflow.com/a/5942176/3861992
插入所有行后,如何获取最近插入的行的id列表?
谢谢
【问题讨论】:
标签: c# sql entity-framework
我根据以下帖子将行批量插入到表中(该表有一个标识列,每次插入新行时都会自动递增)
https://stackoverflow.com/a/5942176/3861992
插入所有行后,如何获取最近插入的行的id列表?
谢谢
【问题讨论】:
标签: c# sql entity-framework
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();
我希望这会有所帮助。
【讨论】:
当所有行都真正插入数据库时(在实体框架中调用SaveChanges()后),这些行的真实ID被填充。
所以在SaveChanges() 之后,您将在插入的对象中拥有 ID,而无需进行任何查询。
【讨论】:
试试这个: dbcontext.Entry([object]).GetDatabaseValues();
这是单行。如果我现在的互联网连接不是那么慢,我会查看文档以查看是否容易获得多行。至少您可以遍历数据库对象列表并获取每个条目的值。然而,这可能不是最快的解决方案。
【讨论】: