前提・実現したいこと
Visual Studio2017を用いて、「新規スキャフォールディングアイテム」→「Entity Frameworkを使用した、ビューがあるMVC5 コントローラー」にで「Question」ビューを作成しました。
標準で生成されるDeleteコントローラーは完全削除でしたので、それを論理削除に変更して削除状態を実装したいと思います。
実装内容を下記に示します。
1)Indexビューに「quwstions」テーブルに格納されている問題を表示します。
2)ユーザーはそこから任意の問題を削除します(論理削除)。
3)Indexビューを表示します。
発生している問題・エラーメッセージ
下記エラーメッセージが生じて削除フラグが更新できません。
EntityValidationErrorsにて検索してもエラーメッセージの回避ばかりで、根本的な解決を提示しているものは見つけられませんでした。
1 つ以上のエンティティで検証が失敗しました。詳細については 'EntityValidationErrors' プロパティを参照してください。
該当のソースコード
C#
1 // POST: Question/Delete/5 2 [HttpPost, ActionName("Delete")] 3 [ValidateAntiForgeryToken] 4 public ActionResult DeleteConfirmed(int id) 5 { 6 QuestionEntities db = new QuestionEntities(); 7 // questionsテーブルからユーザーが指定した問題を取得 8 questions questions = db.questions.Find(id); 9 // 指定した問題の削除フラグ(Isdelete)をtrueにする 10 questions.Isdelete = true; 11 // データーベース更新 12 db.SaveChanges(); 13 // Indexを表示 14 return RedirectToAction("Index"); 15 }
試したこと
下記サイトを参考にコードを修正したのですが、こちらでもダメでした。
おそらく上記コードと実行内容が同じであるためダメだったのかと思います。
参考サイト:https://freemake.co.jp/526/
該当のソースコード
C#
1 // idからレコード抽出 2 var questions = (from QuestionEntities in db.questions 3 where QuestionEntities.QuestionID == id 4 select QuestionEntities).First(); 5 // 状態フラグを「削除状態」に変更 6 questions.Isdelete = true; 7 // 問題更新 8 UpdateModel(questions); 9 db.SaveChanges(); 10 // indexを表示 11 return RedirectToAction("Index"); 12 }
エラーメッセージ
!up70r!The model of type 'QuestionManager.Models.questions' could not be updated. 表©鷗字㌍!
補足情報(FW/ツールのバージョンなど)
Visual Studio 2017
ASP.NET MVC5
.NET Framework 4.6.1
ここにより詳細な情報を記載してください。
追記内容
開発環境
Entity Framework 6.2.0
jQuery 3.3.1
ASP.NET MVC5.2.4
Identity.Entity.Framework 2.2.2
DB:SQL Sever
DBの関係性
「QuestionID」「question」「Answer」カラムがあり、「index」ビューでは「question」「Answer」を表示、ここでユーザーが削除したい問題を選択し、その「QuestionID」を 「delete」ビューに渡して「question」「Answer」を表示。
削除に同意するなら「Isdelete」をtrueにします。
開発状況
下記リンクを参考にDB Firstにて作成しています。
https://kazunori-kimura.github.io/how-to-develop-dot-net-apps/asp-101.html
回答1件
あなたの回答
tips
プレビュー