Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net asp mvc从savechanges()获取最后一个插入id_Asp.net_Sql_Linq_Asp.net Mvc 3_Entity Framework - Fatal编程技术网

Asp.net asp mvc从savechanges()获取最后一个插入id

Asp.net asp mvc从savechanges()获取最后一个插入id,asp.net,sql,linq,asp.net-mvc-3,entity-framework,Asp.net,Sql,Linq,Asp.net Mvc 3,Entity Framework,我先用poco代码。如何获取savechanges()之后的最后一次插入 在上下文(SaveChanges())中保存实体后,谢谢。poco本身的ID属性应由实体框架设置 如果您确实需要有关修改实体的更多信息,可以在实体框架的ObjectContext提供的ObjectStateManager中查找它们 我以以下方式解决该问题: 使用Max()-可以从表中获取最后一个id db.Products.Add(product); db.SaveChanges(); int lastProductId

我先用poco代码。如何获取savechanges()之后的最后一次插入


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


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

我以以下方式解决该问题:

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

db.Products.Add(product);
db.SaveChanges();
int lastProductId = db.Products.Max(item => item.ProductId);
ProductId是Key()和increment

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;

它会自动将其添加到要保存的对象中

请参阅以下示例-

db.Hotels.Add(hotels);
                db.SaveChanges();
                var id = hotels.Id;
这对我有用


Source-

我觉得他希望最后一次插入是从全局表的角度进行的,而不是一次保存操作。我可能错了。是的,我现在也有同样的感觉。我已经读了好几遍这个问题,我仍然觉得他想知道刚刚创建的实体的ID。@J.Tihon entity framework将设置实体本身的ID,但是如果POCO映射到实体,那么POCO将不会被更新。我认为问题在于如何从更新的实体更新POCO。您试图实现什么?这将在多用户系统中产生问题。如果其他用户在您之后1毫秒保存产品,您将获得他的产品Id号,因为它将是当时的最大编号。这是一个小机会,但它会发生!
db.Hotels.Add(hotels);
                db.SaveChanges();
                var id = hotels.Id;