dir.by  
  Поиск  
Программирование, разработка, тестирование
Entity Framework (EF5, EF6) для работы с базой данных на C#
Управление транзакциями в Entity Framework
  Посмотрели 6062 раз(а)    
 Управление транзакциями в Entity Framework 
последнее обновление: 3 августа 2018
В Entity Framework приложении мы можем управлять транзакциями.

Транзакции применяются для того, чтобы выполнить последовтельность операций (выполнять одну операцию за другой).
Если при выполнении какой-то операции происходит ошибка, то все предыдущии операции откатываются (отменяются).
То есть или выполнятся все операции без ошибок или не выполнится ни одной операции(если произошла хоть одна ошибка).

Управление транзакциями:
Пример:
Создание транзакции
var transaction = db.Database.BeginTransaction();
Операция1 с базой данных
Операция2 с базой данных
...
db.Database.ExecuteSqlCommand(@"UPDATE Books SET Price = 23 WHERE Name = 'Три кота'");
db.Books.Add(new Book { Name = "Дом", Price = 78 });

...
Коммит (завершение) транзакции
transaction.Commit();
Откат (отмена транзакции)
transaction.Rollback();
Шаг 1. Создаем новое приложение
Шаг 2. Напишем код
  C#     В файле Program.cs напишем код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Data.Entity;

namespace ConsoleApplication1
{
     // сущность (соответствует таблице в базе данных)
     public class Book
     {
          public int Id { get; set; }
          public string Name { get; set; }
          public int Price { get; set; }
     }

     // Контекст данных
     class UserContext : DbContext
     {
          public UserContext() : base("MyConnection1")
          { }

          public DbSet<Book> Books { get; set; }
     }

     // Вход программы
     class Program
     {
          static void Main(string[] args)
          {
               // create db context
               using (UserContext db = new UserContext())
               {
                    // создаем транзакцию
                    using (var transaction = db.Database.BeginTransaction())
                    {
                         try
                         {
                              // операция 1
                              db.Database.ExecuteSqlCommand(@"UPDATE Books SET Price = 23 WHERE Name = 'Три кота'");

                              // операция 2
                              db.Books.Add(new Book { Name = "Дом", Price = 78 });

                              // операция 3
                              db.SaveChanges();

                              // Завершение транзакции
                              transaction.Commit();
                         }
                         catch (Exception ex)
                         {
                              // отмена транзакции
                              transaction.Rollback();
                         }
                    }
    
                    // покажем на экране
                    foreach(var item in db.Books)
                    {
                         Console.WriteLine("Name={0}, Price={1}", item.Name, item.Price);
                    }
               }
          }
     }
}
Результат примера
 
← Предыдущая тема
SQL команды в Entity Framework
 
Следующая тема →
Что такое <connectionStrings> в .config файле для Entity Framework (EF5, EF6)
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

  Объявления  
  Объявления  
 
Что такое Entity Framework?
Типы в Entity Framework
Соглашения по преобразование типов, наименованию таблиц в Entity Framework
Внешний ключ (Foreign Key) и каскадное удаление
DateTime & только Date & только Time в Entity Framework
Code First
Code First. Мы пишем C# класс. Entity Framework по нашему C# классу → создает и заполняет таблицу в базе данных
Auto Code First. Entity Framework из существующей таблицы в базе данных → создает C# класс
Database First
Database First. Entity Framework из существующей таблицы в базе данных → создает C# класс
Model First
Model First. Мы создаем модель в Visual Studio. По модели Entity Framework → создает C# классы и Базу данных
Работа с данными
Перебор данных в Entity Framework
Добавление данных в Entity Framework
Изменение (редактирование) данных в Entity Framework
Удаление данных в Entity Framework
Инициализация и миграция базы данных
Инициализация базы данных в Entity Framework. DropCreateDatabaseAlways позволяет при каждом новом запуске заполнять базу данных заново
Выполнение миграции Базы Данных в Entity Framework (если уже кто-то раньше сделал cs файл миграции, а мне хочется обновить у себя на компютере базу данных я выполняю миграцию то есть вызываю EntityFramework\Update-Database)
Создание и выполнение миграции Базы Данных в Entity Framework (я поменял c# класс, потом вызываю EntityFramework\add-migration т.е. автоматически добавляется в проект cs файл с кодом миграции, потом вызываю EntityFramework\Update-Database т.е. выполняется файл миграции и меняется база данных)
SQL в Entity Framework
SQL команды в Entity Framework
Транзакции в Entity Framework
Управление транзакциями в Entity Framework
Дополнительные темы, вопросы
Что такое <connectionStrings> в .config файле для Entity Framework (EF5, EF6)
При вызове EntityFramework\Update-Database появляется ошибка "System.Data.SqlClient.SqlException (0x80131904). A network-related or instance-specific error occurred while establishing a connection to SQL Server."
При вызове EntityFramework\Update-Database появляется ошибка "Your startup project '...' doesn't reference Microsoft.EntityFrameworkCore.Design"
WWW сайты для изучения Entity Framework
Сайты для изучения Entity Framework

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика