我在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");
}
答案 0 :(得分:2)
两种解决方案:
如果您仍想在数据库中保留S_no,则只要发生任何删除,您就需要直接更新数据库(使用触发器)。
row_number()over(由formId按formId顺序分区)