重置数据库记录的ID列

时间:2018-10-22 21:01:19

标签: c# sql-server entity-framework-6

我有一个自己无法解决的问题。我的客户请求重置按钮,它提供了删除所有记录和重置ID的功能。

删除记录没有问题,但我无法获得重置ID。

private void SettingsDLT_delete_button_Click(object sender, EventArgs e)
{
    MainWeight main = new MainWeight();
    main.RemoveAllWeight();
}

和控制器:

public void RemoveAllWeight()
{
    try
    {
        using (DaghanKantarEntities context = new DaghanKantarEntities())
        {
            context.tbl_MainWeight.RemoveRange(
                context.tbl_MainWeight.Where(c => c.fldId != null));
            context.SaveChanges();
        }
    }
    catch (Exception exp)
    {
        throw new Exception("Hata: Kayıt Silinemedi - " + exp.Message.ToString(), exp);
    }
}

2 个答案:

答案 0 :(得分:2)

如果您正在使用SQL Server Management Studio,则可以重新设置主键。您可以将以下内容作为原始查询而不是通过实体运行:

DBCC CHECKIDENT ('table_name', RESEED, 1)

您也可以TRUNCATE table_name而不是删除所有记录。

答案 1 :(得分:0)

谢谢大家的帮助。我已经解决了我的问题,例如将共享代码。问候。

private void SettingsDLT_delete_button_Click(object sender, EventArgs e)
    {
        MainWeight main = new MainWeight();
        main.ResetId();

    }

和控制器端

        public void ResetId()
    {
         try
        {
            using (DaghanKantarEntities context = new DaghanKantarEntities())
            {
                context.Database.ExecuteSqlCommand("DELETE FROM dbo.tbl_MainWeight");
                context.Database.ExecuteSqlCommand("DBCC CHECKIDENT ('tbl_MainWeight', RESEED, 0)");
                context.SaveChanges();

            }
        }
        catch (Exception exp)
        {
            throw new Exception("Hata: Kayıt Resetlenemedi - " + exp.Message.ToString(), exp);
        }

    }