Это метод обновления. Fromt eh, пользователь может изменять данные для существующего ученика, учителя или субъекта.EF6 Проверка каждого объекта для изменений перед сохранением
Я возвращаю модель представления в контроллер, который состоит из этих 3-х различных объектов:
- ViewModel -
public class StudentTeacherVM
{
public StudentModel Student { get; set; }
public TeacherModel Teacher { get; set; }
public SubjectModel Subject { get; set; }
}
В контроллере я расколоть из данных в VM в дБ сущность, а затем сохранить их:
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();
}
Иногда один или несколько предметов, не изменяется, поэтому, когда код получает на этот шаг он бросает «обновление магазина, вставку или удаление сек tatement повлияло на непредвиденное количество строк (0) ".
Как проверить каждый объект для изменений перед выполнением сохранения, поэтому я могу пропустить объект, если нет изменений?
Исключение, которое вы получаете, не выбрасывается, когда объект не изменяется, но когда объект является новым и должен быть добавлен. –
Я думаю, вам нужно добавить их в DbSet, а не вручную вступать в состояние изменения, но я не очень много знаю о вашем приложении. – Casey
Casey - Что значит «добавить их в DbSet»? – BattlFrog