删除其中一个后重新编号其余记录

时间:2017-11-20 08:12:31

标签: c# asp.net asp.net-mvc algorithm sorting

我在SQL Server中使用Entity Framework ASP.NET MVC创建了一个数据库。我有一个名为" S No。"代表序列号。现在当我从数据库中删除一条记录时,显然是" S No。"跳过记录序列号。我想重新编号" S No。"列使用我的控制器。是否有任何算法可以让我轻松重新编号?

以下是AddFeature()方法的代码,其中我编号为" S No。"列。

  public ActionResult AddFeature(Models.SoftwareFeatureList s)
    {
        ViewBag.Username = uname;
        ViewBag.UserType = utype;
        try
        {
            c = new DatabaseZTBLEntities();
            s.FormId = formid;
            int identity = c.SoftwareFeatureLists.Where(u=>u.FormId.Equals(formid)).Count() +1;
            s.S_No_ = identity;
            c.SoftwareFeatureLists.Add(s);

            c.SaveChanges();
        }
        catch(Exception e)
        {
            ViewBag.Error = e.Message;
            return View("error");
        }
        finally
        {
            c.Database.Connection.Close();
        }
        return Redirect("FeaturesListPage");
    }

1 个答案:

答案 0 :(得分:2)

两种解决方案:

  1. 不要将S_no保留为数据库中的列,而是在读取操作上返回记录时动态生成其值。
  2. 如果您仍想在数据库中保留S_no,则只要发生任何删除,您就需要直接更新数据库(使用触发器)。

    row_number()over(由formId按formId顺序分区)