У меня есть несколько таблиц в БД, и я хочу удалить все данные и повторно заполнить таблицы, а затем выполнить изменения сохранения (потому что в случае неудачи сохранения я хочу вернуться к старым данным).Добавление и удаление данных из db с использованием Entity Framework
Когда я удаляю данные из БД, а затем пытаюсь добавить данные в БД, он не работает и говорит: «Добавить отношения с сущностью, находящейся в состоянии« Удалено », не разрешено», но когда я удаляю затем данные сохранить, а затем добавить новые данные и сохраняет снова, все работает отлично ..
вот мой код, если это помогает понять проблему
// create the new data
SomeDataHolder data = ... ;
// save some data to re-enter back after changes
List<User> usersSave = ctx.Users.ToList();
List<UserPreferences> userPrefsSave = ctx.UserPreferences.ToList();
//clear DB
ctx.UserCourses.RemoveRange(ctx.UserCourses);
ctx.Users.RemoveRange(ctx.Users);
ctx.Specializtions.RemoveRange(ctx.Specializtions);
ctx.Course_Predecessor.RemoveRange(ctx.Course_Predecessor);
ctx.Courses.RemoveRange(ctx.Courses);
ctx.Departments.RemoveRange(ctx.Departments);
ctx.GroupsDetails.RemoveRange(ctx.GroupsDetails);
ctx.LinkTable.RemoveRange(ctx.LinkTable);
это следующая строка делает все работает, без эта строка будет сбой кода при следующем сохранении
// ctx.SaveChanges();
updateDepartmentsCoursesSpecialization(ctx, data.Specializations);
updateCoursePredecessorsAndParallel(ctx, data.Predecessors);
updateGroupDetails(ctx, data.GroupDetails);
updateLectureToPractice(ctx, data.LinkLectureWithPractice);
ctx.Users.AddRange(usersSave);
ctx.UserPreferences.AddRange(userPrefsSave);
ctx.SaveChanges();
проблема все еще происходит. в том же месте. Мне нужно изменить операции сущности на команды SQL? или я все еще могу использовать команды EF с этими транзакциями – Adam
Oh..No need.you можете использовать любую команду EF. – Sampath
Такая же ошибка возникает при попытке добавить элементы в контекст. Поняла? это происходит до сохранения изменений в функции updateCoursePredecessorsAndParallel (которые только делают ctx.SomeTable.AddRange (SomeData)) – Adam