Ich poste Modellobjekt aus Sicht, in der Eltern und Kind-Liste existieren und auch ich nehme ein anderes Objekt, das ich aus der Datenbank bin. So vergleiche ich Objekte wieAktualisieren und Löschen von Datensatz durch Modellbindung in 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();
}
ich bin Aktualisierung und records.If löschen i die Aufnahmefunktion funktionieren aktualisieren, aber wenn ich den Datensatz löschen und veröffentlichen die Ansicht dann DBContext.Entry (Template) .State = EntityState.Modified; gibt Fehler.Wie kann ich Datensatz löschen.Was fehlt mir in den Code.
ich nicht der Rekord in loop.I am Löschen nur in Objektliste ist hinzufügen und später löschen, wenn Schleife finished.I Betrieb soll durch eine Objektliste durch modifizierte Entitätsstatus. –
Dies können Sie nicht tun. Das ist, was ich rede .... foreach (CheckListQuestion qst in delQuestions) { var itemToRemove = template.Questions.Single (r => r.Id == qst.Id); template.Questions.Remove (qst); } Wenn Sie dies wirklich aus irgendeinem Grund verwenden müssen anstelle von foreach. –