SaveChanges() є одним із двох методів для збереження змін до бази даних за допомогою EF. За допомогою цього методу ви виконуєте одну або кілька відстежуваних змін (додавання, оновлення, видалення), а потім застосовуєте ці зміни, викликаючи метод SaveChanges.
Іноді корисним є поєднання SaveChanges(false) + AcceptAllChanges(). Найкорисніше місце для цього у ситуаціях, коли ви хочете виконати розподілену транзакцію в двох різних контекстах. Якщо контекст1. SaveChanges() виконується успішно, але context2.
Що робити, якщо SaveChanges() не вдається?
- Перехопити виняток, спричинений невдалим викликом SaveChanges().
- З’ясуйте всі помилки, які виникли під час виклику SaveChanges().
- З’ясуйте, які сутності викликали помилки.
- Або відобразити користувачеві помилки та сутності, які викликають помилки, або записати цю інформацію десь.
У всіх версіях Entity Framework кожного разу, коли ви виконуєте SaveChanges(), щоб вставити, оновити або видалити базу даних, фреймворк загорне цю операцію в транзакцію. Ця транзакція триває лише стільки часу, скільки потрібно для виконання операції, а потім завершується.
Яка технічна різниця між SubmitChanges у Linq-to-SQL і SaveChanges у Entity Framework? Ми знаємо SubmitChanges — це концепція класу DataContext, а SaveChanges — це метод ObjectContext . Є ще якісь відмінності? По суті, це те саме — лише для двох різних бібліотек коду.
Метод BatchSaveChanges Entity Framework є найшвидший спосіб зберегти декілька або сотні об’єктів. Використовується той самий sql у тому самому порядку, що й SaveChanges, але групується в меншу кількість команд для підвищення продуктивності.