EF Core Add函数返回负id

Ave*_*ven 23 entity-framework asp.net-core-1.0

今天我注意到一个奇怪的事情,当我试图保存一个实体并在EF Core中返回它的id时

之前: 在将ID添加到数据库之前,Id为0 后: 现在id已更改为负值

我正在考虑是否在调用saveChanges()之前,但它适用于具有类似设置的另一个实体.

ps:我使用工作单元来保存最后的所有更改.

是什么原因?

Daw*_*ski 19

在保存更改之前,它将为负数.只需调用Save上下文.

_dbContext.Locations.Add(location);
_dbContext.Save();
Run Code Online (Sandbox Code Playgroud)

保存后,您将拥有数据库中的ID.您可以使用事务,在获得ID后可以回滚以防出现问题.

另一种方法是不使用数据库的内置IDENTITY字段,而是自己实现它们.当你有大量的批量插入操作时,这可能非常有用,但它需要付出代价 - 实现起来并不容易.

  • 此行为在 EF Core 3.1 中发生了变化,添加的实体的 id(再次)为 0。 (6认同)