Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ПИ Программирование на С# _Хотов.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
2.22 Mб
Скачать
      1. Управление транзакциями

Когда мы вызываем при добавлении, обновлении, удалении метод SaveChanges(), то фактически Entity Framework проводит транзакцию. В приложении на C# мы также управлять транзакциями. Когда може быть полезно ручное управление транзакциями? Транзакции применяются чаще всего для того, чтобы выполнить последовательность операций, которые должны отличаться высокой согласованностью, и при этом иметь возможность откатить все сделанные из этих операций назад, если какая-нибудь из этих операций завершилась с ошибкой

Рассмотрим на примере. Например, у нас есть в базе данных человек по имени Bob. У него родился сын, которого тоже назвали Bob. И теперь, чтобы их разграничить, отцу мы присваиваем имя Bob Senior, а сыну - Bob Junior:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

using(UserContext db = new UserContext())

{

    using(var transaction = db.Database.BeginTransaction())

    {

        try

        {

            Person p1 = db.People.FirstOrDefault(p => p.Name == "Bob");

            p1.Name = "Bob Senior";

            db.Entry(p1).State = EntityState.Modified;

            Person p2 = new Person { Name = "Bob Junior", Age = 1 };

            db.People.Add(p2);

            db.SaveChanges();

            transaction.Commit();

        }

        catch(Exception ex)

        {

            transaction.Rollback();

        }

    }

 

    foreach(Person p in db.People.ToList())

        Console.WriteLine("Name: {0}  Age: {1}",p.Name, p.Age);

}

Для создания транзакции используется выражение var transaction = db.Database.BeginTransaction(), и так как классDbContextTransaction реализует интерфейс IDisposable, то весь код транзакции обертываем в конструкцию using

Далее производятся все те же обычные операции редактирования и добавления. После операций вызывается методtransaction.Commit() для коммита транзакции.

Однако если, допустим, у нас возникнет исключение параллелизма или любое другое исключение при редактировании или добавлении, то есть одна из операций (или обе) завершатся неудачно, то они в целом смысла уже не будут иметь. Поэтому надо будет откатить все сделанные изменения с помощью метода transaction.Rollback()

  1. Руководство по программированию для Xamarin Forms

Глава 1. Xamarin и кросс-платформенная разработка

Введение в Xamarin. Установка

Создание и настройка проекта

Создание приложения

Запуск на Android

Запуск на Windows 10

Xamarin Studio для Mac OS

Тестирование проекта для iOS из Visual Studio

Проект Xamarin.Forms Shared

Глава 2. Графический интерфейс в Xamarin Forms

Создание графического интерфейса

XAML

Взаимодействие XAML и C#

Расширения разметки XAML

Глава 3. Контейнеры компоновки

Элементы компоновки

StackLayout и ScrollView

AbsoluteLayout

RelativeLayout

Контейнер Grid

Глава 4. Элементы в Xamarin и их свойства

Позиционирование элементов на странице

Работа с цветом

Стилизация текста

Кнопки

Текстовые поля

Контейнер Frame и BoxView

Работа с изображениями. Элемент Image

Выбор даты и времени. DatePicker и TimePicker

Выпадающий список Picker

Stepper и Slider

Переключатель Switch

TableView

WebView

ListView

Всплывающие окна

Таймеры

TabbedPage. Страница с вкладками

Глава 5. Платформо-зависимый код

Метод Device.OnPlatform

Платформо-зависимость в XAML

DependencyService

Глава 6. Ресурсы и стили

Концепция ресурсов в Xamarin Forms

Стили

Триггеры

Глава 7. Привязка в Xamarin

Введение в привязку

BindableObject и BindableProperty

Объект Binding

Конвертеры значений

Привязка к объектам. Интерфейс INotifyPropertyChanged

Привязка к списку объектов

ObservableCollection

Группировка в ListView

Триггеры данных

Глава 8. Навигация

Основы навигации

Стек навигации

Передача данных при навигации

Сообщения и MessagingCenter

Глава 9. Хранение данных. Файлы

Свойство Properites

Настройки приложения

Работа с файлами

Глава 10. MVVM

Паттерн Model-View-ViewModel

Команды и взаимодействие с пользователем в MVVM

Пример MVVM

Контекстное меню

Глава 11. Работа с SQLite

Настройка проекта для работы с SQLite.NET

Основные операции с SQLite.NET

Подключение к существующей базе данных

Асинхронное подключение к SQLite

Глава 12. Глобализация и локализация

Добавление локализации

Определение языковой культуры

Локализация XAML

Глава 13. Взаимодействие с сервером

Подключение к сети

Класс HttpClient и отправка запросов

Получение данных с сервера в json

Создание веб-сервиса

Взаимодействие с веб-сервисом

Создание интерфейса для работы с веб-сервисом

Глава 14. Визуальные компоненты ContentView

Создание визуальных компонентов

Глава 15. Рендеринг элементов управления

Создание нового элемента

Добавление свойств

Добавление событий

Наследование элемента и рендерера