如何在Entity Framework 4中获取SQL 2008的下一个主键

Jak*_*keJ 5 c# sql-server visual-studio-2010 entity-framework-4 asp.net-mvc-3

我正在使用Entity Framework 4连接来连接到SQL 2008服务器,以便为我的应用程序执行数据库处理.

我在Visual Studio 2010中使用C#,我的问题是关于SQL本身增加的主键字段,我是否有可能找到数据库接下来要使用的ID.

我不能只找到最后一项和+1的原因是因为如果我的表包含项目1,2,3,4和5,删除项目5然后添加另一项将使下一项目成为项目6,而不是5(因为我在SQL中使用身份规范,但必须使用它.

我找不到任何方法,如Item.ID.GetNextIdentity()或类似的东西,并查看了这样多的类似问题但无济于事.

任何帮助,将不胜感激

Lad*_*nka 9

在执行保存之前,没有可靠的方法来使用自动递增的ID并在表单中显示它.这是错误的架构.如果您想在保存表单之前显示ID,您必须:

  • 不使用自动递增列作为ID并自行处理唯一性
  • 当用户在某个初始空状态下开始创建表单时立即保存表单,最终表单确认只会更新

为什么你不能要求下一个ID?因为如果你以任何方式这样做,没有人说收到的ID将真正用于你的表格.如果另一个进程/线程/应用程序在您的ID检索和表单持久性之间插入表单,则您显示的ID将分配给该插入的表单.

此外,如果您在数据库中使用自动递增的主键,则无法在应用程序中分配键值 - 不会使用该值,并且数据库可以使用自己的值覆盖它.