例如,如果您想重新排列問題列表,並且讓最後一個問題移動,那麼在我做的所有事情之前的問題就是密鑰的價值,但在我看來,我是錯誤的,證明你收到此消息:跳到一年級列表
「System.InvalidOperationException」類型的異常出現在EntityFramework.dll但
其他信息未在用戶代碼來處理:該物業「ID」是的一部分該對象的關鍵信息無法修改。
public ActionResult Up(int id , string st)
{
var qus = db.Qusetions.Find(id);
if(st == "up")
{
if(qus.ID != 1)
{
qus.ID = -1;
var qusup = db.Qusetions.SingleOrDefault(q => q.ID == q.ID - 1);
if (qusup != null)
{
qusup.ID = id;
}
}
}
if (st == "down")
{
qus.ID = +1;
var qusup = db.Qusetions.SingleOrDefault(q => q.ID == q.ID + 1);
if (qusup != null)
{
qusup.ID = id;
}
db.SaveChanges();
}
return RedirectToAction("Index", new RouteValueDictionary(new { controller = "Qustions", action = "Index", id = id }));
}
不要修改Id列,如果它的主鍵。添加到您的實體新列SortIndex中,您將使用它對行進行排序。然後根據需要修改這個新屬性。 – Lesmian
感謝您的幫助,但是如何按排序索引 – Sultan
db.Qusetions.SingleOrDefault(q => q.SortIndex == q.SortIndex - 1)來枚舉列表。只需引入另一個將保存當前排序順序的字段。您不能修改您的主鍵的Id值。 – Lesmian