我正在使用 Entity Framework 4 连接连接到 SQL 2008 服务器来为我的应用程序执行数据库处理。
我在 Visual Studio 2010 中使用 C#,我的问题是关于由 SQL 本身递增的主键字段,我是否有可能找到数据库接下来将使用的 ID。
我不能只找到最后一项并 +1 的原因是如果我的表包含项目 1、2、3、4 和 5,删除项目 5 然后添加另一个将使下一项成为项目 6,而不是5 再次(因为我在 SQL 中使用身份规范,但必须使用它)。
我找不到任何方法,例如 Item.ID.GetNextIdentity() 或类似的方法,并且查看了很多类似的问题,但无济于事。
任何帮助将不胜感激
最佳答案
没有可靠的方法来使用自动递增的 ID 并在保存之前将其显示在表单中。那是错误的架构。如果您想在保存表单之前显示 ID,您必须:
- 不使用自动递增列作为 ID 并自行处理唯一性
- 当用户在初始空状态下开始创建表单时立即保存表单,最终表单确认将仅更新
为什么不能要求下一个ID?因为如果您以任何方式这样做,没有人会说收到的 ID 会真正用于您的表单。如果另一个进程/线程/应用程序在您的 ID 检索和表单持久性之间插入表单,则您显示的 ID 将分配给插入的表单。
此外,如果您在数据库中使用自动递增的主键,则无法在您的应用程序中分配键值 - 该值将不会被使用,数据库可以用自己的值覆盖它。
关于c# - 如何在 Entity Framework 4 中获取 SQL 2008 的下一个主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7038234/