实体框架 - 主树的最后一个 ID



目前我正在编写一个应用程序,用于保存和删除数据库中的条目(首先使用实体框架进行代码(。我的问题是我如何获取下一个数据库 ID(配置了自动增量 - 因此它会自动添加 +1(。

我尝试了类似的东西:

var a = databaseContext.MyObject.LastOrDefault().Id;
var myNextDatabaseId = a+1;

此伪代码适用于大多数情况。但是,如果我的数据库中有 5 个主菜并删除所有五个主菜,我的下一个数据库计数器将是6。当我使用上面的代码时,它将返回"null",因为实际上没有主菜。但是我必须获得下一个数据库自动增量 ID。

是否有可能不创建新的数据库条目?认为这应该是不必要的。

例如,以下数据构造:

  1. 插入的条目 1(内部 ID = 1(
  2. 插入的条目 2(内部 ID = 2(
  3. 删除条目一
  4. 删除第二项
  5. 读取最后一个数据库条目(条目 = 空(。所有数据都已删除,但我正在尝试接收下一个自动增量 id3

使用显式事务范围和标识列。尝试在应用程序级别维护 ID 是不可缩放的,并且容易出现并发错误。

理想情况下,事务应跨越 Web 服务调用,以便在调用失败时自动回滚。使用显式事务,可以调用context.SaveChanges(),这将公开分配给实体的下一个 ID,然后在 Web 服务调用失败时回滚。这可以是由上下文或TransactionScope管理的事务。

请参阅:https://msdn.microsoft.com/en-US/library/DN456843(v=vs.113(.aspx

最新更新