任何人都知道如何解决这个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保持不变。
答案 0 :(得分:6)
不执行此操作,假设有人链接到您的网页http://mysite.com/article.aspx?ArticleID=1234,并且您之前删除了一些索引,突然间1234引用完全不同的内容。更不用说所有必须更新的外键约束(暗示您的数据库已正确规范化)。
这将是一个并发和可用性的噩梦。
答案 1 :(得分:0)
我认为唯一的方法是首先删除有问题的项目,然后选择表格中的项目,删除表格,然后再次创建表格,然后再次插入表格数据。
只有在您的数据库中没有链接外键时才会这样,否则会出现引用错误。
除此之外..就是不要这样做。
如果您确实需要一个具有连续ID的列,则添加另一个不是主键列的列,您可以在不破坏与其他表的关系的情况下进行更新。但话说回来,你将无法从其他表中引用它