-2

有人知道如何解决这个ID问题吗?

例如 :

ID | Message
1  |  Hi
2  |  Philemon
3  |  Car              <-- Delete this row
4  |  Tay
5  |  Bye

当您删除第 3 行时,该行后面的 ID 将自动更新并填写 ID。

ID  | Message
1   | Hi
2   | Philemon
3   | Tay
4   | Bye

更多信息 :

private void btnDel_Click(object sender, EventArgs e)
    {
        using (testEntities Setupctx = new testEntities())
        {
            int ID = Int32.Parse(lblID.Text);
            var DeleteSh = (from delsh in Setupctx.shifthours
                            where delsh.idShiftHours == ID
                            select delsh).Single();
            Setupctx.DeleteObject(DeleteSh);
            Setupctx.SaveChanges();
            txtStart.Text = "";
            txtStop.Text = "";
            this.Edit_Shift_Hours_Load(null, EventArgs.Empty);
            MessageBox.Show("Selected Shift Timing Has Been Deleted.");
        }
    }

这是删除行的代码。删除后,我需要 ID 自动更新,以便用下一个数据填充已删除的 ID。目前我可以删除信息,但 ID 保持不变。

4

2 回答 2

6

不要这样做,假设有人链接到您的页面http://mysite.com/article.aspx?ArticleID=1234 并且您删除了它之前的一些索引,突然 1234 引用了完全不同的东西。更不用说所有必须更新的外键约束(意味着您的数据库已正确规范化)。

这将是并发性和可用性的噩梦。

于 2012-07-12T02:12:16.687 回答
0

我相信这样做的唯一方法是首先删除有问题的项目,然后选择表中的项目,删除表,然后再次创建它,然后再次插入表数据。

这只有在您的数据库中没有链接外键的情况下才有可能,否则您会收到参考错误。

除此之外..只是不要这样做。

如果您确实需要具有连续 ID 的列,请添加另一个不是主键列的列,您可以在不破坏与其他表的关系的情况下进行更新。但是话又说回来,您将无法从其他表中引用它

于 2012-07-12T13:38:44.513 回答