0
親と子のリストが存在するビューからモデルオブジェクトを投稿し、データベースからフェッチするオブジェクトを別に取っています。asp.net mvcでモデルバインドを使ってレコードを更新、削除する
public bool ChildRecords(CheckListTemplate questList)
{
int templateId = questList.Id;
if (templateId > 0 && questList.Questions.Count() > 0)
{
var template =DBContext.CheckListTemplates.Include(p => p.Questions).SingleOrDefault(p => p.Id == templateId);
template.Name = questList.Name;
List<CheckListQuestion> delQuestions = new List<CheckListQuestion>();
foreach(CheckListQuestion q in template.Questions)
{
var question = questList.Questions.Where(x => x.Id == q.Id).FirstOrDefault();
if (question == null)
{
delQuestions.Add(q);
}
else
{
q.Question = question.Question;
q.Clause = question.Clause;
}
}
if(delQuestions.Count()>0)
{
foreach(CheckListQuestion qst in delQuestions)
{
var itemToRemove = template.Questions.Single(r => r.Id == qst.Id);
template.Questions.Remove(qst);
}
}
DBContext.Entry(template).State = EntityState.Modified;
DBContext.SaveChanges();
}
私が更新しrecords.Ifを削除私は録音機能は正常に動作を更新するが、ときに私はDBContext.Entry(テンプレート).State = EntityState.Modified、レコードを削除し、ビューを投稿しています。 はエラーを出しています。レコードを削除するにはどうしたらいいですか?コード内には何がないのですか。
私はループ内のレコードを削除していません。オブジェクトリストを追加するだけで、ループが終了したら後で削除します。エンティティの状態を変更して1つのオブジェクトリストを操作したい。 –
これはできません。それは私が話していることです.... foreach(delQuestionsのCheckListQuestion qst) { var itemToRemove = template.Questions.Single(r => r.Id == qst.Id); template.Questions.Remove(qst); } 何らかの理由で実際にこれを行う必要がある場合は、foreachの代わりにforを使用してください。 –