たとえば、質問のリストを並べ替えて、最後に質問を移動させたい場合は、前に行ったことはすべてキーの値ですが、間違っていたとの証拠は、あなたがこのメッセージが表示されます。「System.InvalidOperationException」種類の例外がEntityFramework.dllで発生したが、第1学年のリストでジャンプ
追加情報ユーザーコードで処理されなかった
:プロパティ「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カラムがプライマリキーの場合は、Idカラムを変更しないでください。エンティティに新しい列SortIndexを追加して、行をソートします。次に、この新しいプロパティを必要に応じて変更します。 – Lesmian
ご協力ありがとうございますが、ソートインデックス – Sultan
db.Qusetions.SingleOrDefault(q => q.SortIndex == q.SortIndex - 1)でリストを列挙するにはどうすればいいですか?現在のソート順を保持する別のフィールドを導入してください。主キーのID値は変更できません。 – Lesmian