asp mvc从savechanges获取最后一个插入ID()

col*_*k04 10 sql linq asp.net entity-framework asp.net-mvc-3

我首先使用poco代码.如何在savechanges()之后获得最后一次插入?

谢谢

小智 15

我以这种方式解决了这个问题:

使用Max() - 您可以从表中获取最后一个ID

db.Products.Add(product);
db.SaveChanges();
int lastProductId = db.Products.Max(item => item.ProductId);
Run Code Online (Sandbox Code Playgroud)

ProductId是Key()和增量

  • 这将在多用户系统中产生问题.如果其他用户在您之后1毫秒保存产品,您将获得他的产品ID号,因为它将是当时的最大数量.这是一个很小的机会,但它会发生! (5认同)

小智 11

register = db.registers.CreateObject();
register.id = 0;
register.customer = h.customer;
register.employee = employee_created;
register.created = DateTime.Now;
db.registers.AddObject(register);
db.SaveChanges();

//You can get the ID here
int last_insert_id = register.id;
Run Code Online (Sandbox Code Playgroud)


J. *_*hon 8

在上下文中保存实体后(SaveChanges()).poco本身的ID属性应由实体框架设置.

如果您确实需要有关已修改实体的更多信息,可以在Entity Framework的ObjectContext提供的ObjectStateManager中查找它们.