EFを使用してCMSに基本的なCRUDがあり、最初にデータベースを使用して行われました。削除機能は、データベースからレコードを削除するだけです。
以下は、削除のコントローラー コードです。
public ActionResult Delete(int id)
{
Database_Table database_table = db.Database_Table.Find(id);
return View(database_table);
}
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
Database_Table database_table = db.Database_Table.Find(id);
db.Database_Table.Remove(database_table);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
クライアントの観点からの安全上の理由から、実際にデータベース テーブルからエントリを削除する代わりに、データベース内の値、つまり「削除済み」を「N」から「Y」に変更してから非表示にします。 'Y' の値を持つエントリは、カスタム クエリを介して表示されません。それが理にかなっていれば。私の質問は、このコードを削除しないように変更する方法ですが、その 1 つの値を変更するだけです。
私はそれが次のようになると思います:
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
if (ModelState.IsValid)
{
Database_Name database_name = db.Database_Name.Find(id);
db.Entry(database_name).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(database_table);
}
しかし、変更される唯一の値、この例では「削除された」値をどこで定義しようとしているのかわかりません。また、値が「N」のエントリのみをビューに返す必要があると言うかもしれません