Dies ist eine Update-Methode. Aus einer früheren Ansicht kann der Benutzer Daten für einen vorhandenen Schüler, Lehrer oder Fach ändern.EF6 Überprüfen Sie jede Entität auf Änderungen vor dem Speichern
kehre ich eine Ansicht Modell zu einer Steuerung, die aus diesen 3 verschiedenen Einheiten besteht:
- Ansichtsmodell -
public class StudentTeacherVM
{
public StudentModel Student { get; set; }
public TeacherModel Teacher { get; set; }
public SubjectModel Subject { get; set; }
}
In der Steuereinheit I die Daten in der VM aufzuschlüsseln in die db Einheiten, so dass sie dann speichern:
using (var db = new SchoolEntities())
{
Student student = new Student()
{
StudentId = model.StudentId,
FirstName = model.FirstName,
LastName = model.LastName,
EmailAddress = model.StudentEmailAddress,
TeacherId = model.TeacherId
};
Teacher teacher = new Teacher()
{
TeacherId = model.TeacherId,
FirstName = model.FirstName,
LastName = model.LastName,
EmailAddress = model.TeacherEmailAddress
SubjectId = model.SubjectId
};
Subject subject = new Subject()
{
SubjectId = model.SubjectId,
Description = model.SubjectDescription,
Level = model.SubjectLevel
};
db.Entry(subject).State = EntityState.Modified;
db.Entry(teacher).State = EntityState.Modified;
db.Entry(student).State = EntityState.Modified;
db.SaveChanges();
}
Manchmal eine oder mehrere der Themen werden nicht geändert, so dass, wenn der Code zu diesem Schritt wird es führt den „Store aktualisieren, einfügen oder löschen s Eine unerwartete Anzahl von Zeilen (0) "Fehler.
Wie überprüfe ich jedes Element vor dem Speichern auf Änderungen, so dass ich ein Element überspringen kann, wenn es keine Änderung gibt?
Die Ausnahme, die Sie erhalten, wird nicht ausgelöst, wenn die Entität nicht geändert wird, aber wenn die Entität neu ist und hinzugefügt werden muss. –
Ich denke, dass Sie sie zu einem DbSet hinzufügen müssen, anstatt mit dem Änderungsstatus manuell zu verwirren, aber ich weiß nicht viel über Ihre Anwendung. – Casey
Casey - Was bedeutet "hinzufügen sie zu einem DbSet"? – BattlFrog