Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#实体框架如何在删除行后设置自动ID值_C# - Fatal编程技术网

c#实体框架如何在删除行后设置自动ID值

c#实体框架如何在删除行后设置自动ID值,c#,C#,我正在使用实体框架 删除记录时如何设置自动ID 例如: 我删除了一条ID为5的记录 如何将第二个ID设置为5,而不是6 [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int DataID { set; get; } public string FName { set; get; } public string LName { set; get; } pub

我正在使用实体框架

删除记录时如何设置自动ID

例如:

我删除了一条ID为5的记录

如何将第二个ID设置为5,而不是6

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int DataID { set; get; }

    public string FName { set; get; }

    public string LName { set; get; }

    public string FaName { set; get; }
我说的是数据ID

这就是我删除记录的函数

  private void button4_Click(object sender, EventArgs e)
        {
              using (ScoutContext db = new ScoutContext())
                {
                   var toBeDeleted = (int)dataGridView1.SelectedRows[0].Cells[0].Value;
                    var userdata = db.ScoutDatas.First(c => c.DataID == toBeDeleted);
                    db.ScoutDatas.Remove(userdata);
                    db.SaveChanges();
                    dataGridView1.Refresh();
             }
        }
我需要像这样,但在c#

也许是它的工作

var toBeDeleted = (int)dataGridView1.SelectedRows[0].Cells[0].Value;
            var userdata = db.ScoutDatas.Where(c => c.DataID >= toBeDeleted).Take(2).ToList();
            db.ScoutDatas.Remove(userdata[0]);
            userdata[1].DataID = toBeDeleted;
            db.SaveChanges();
            dataGridView1.Refresh();

这是自动增量吗?请向您展示模型类和dbcontext类。在关系数据库系统中,修改现有记录的主键很少是一个好主意。为什么-1?这不是一个好问题吗?在具有自动递增键的SQL列中,即使删除了所有记录,下一次插入的索引也会递增,并且不会以1开头。如果截断表,它将仅以1开头。如果您仍然需要这种类型的功能,您可以编写自己的逻辑来插入您选择的值。Yes Man it’s work的可能重复项,但在这之后,表的其余部分的IDValue将不正确,因此我需要将ID的自动增量重置为表的其余部分。Houuuuuuuu请参见如果您想全部更新,您可以删除。您需要一个for循环来获得结果。但我不建议这样做。我不知道,你要用在哪里。也许排号更容易。
var toBeDeleted = (int)dataGridView1.SelectedRows[0].Cells[0].Value;
            var userdata = db.ScoutDatas.Where(c => c.DataID >= toBeDeleted).Take(2).ToList();
            db.ScoutDatas.Remove(userdata[0]);
            userdata[1].DataID = toBeDeleted;
            db.SaveChanges();
            dataGridView1.Refresh();