Ehsan Sajjad Ответов: 1

Выполнение блока кода в транзакции


У меня есть сценарий, в котором нам нужно выполнить несколько операций, но все они должны быть атомарными, что включает в себя сначала запись строк в таблицу, а затем использование идентификатора для этих строк, запись файла для каждого из них по сетевому пути и последующую запись в другие строки таблицы.

Что мне здесь нужно, так это то, что все это должно быть атомарной операцией, то есть все шаги должны завершиться успешно, если какой-либо из процессов по какой-то причине потерпит неудачу, я хочу, чтобы изменения, сделанные в этом контексте, были откатаны.

Я знаю о классе TransactionScope, который мы используем в ADO.Net и Entity Framework. Но мне нужен какой-то механизм для выполнения этих операций ввода-вывода и действий БД в одной транзакции.

Что я уже пробовал:

Я пробовал использовать TransactionScope, но не могу понять, как использовать его для обеих операций. Он обычно работает для работы с БД, но не уверен, как он будет вести себя для операции дискового ввода-вывода, такой как создание файла.

1 Ответов

Рейтинг:
12

Aydin Homay

Привет,

Насколько я знаю, вы можете использовать Транзакционный Файловый Менеджер который является .Чистый API, который поддерживает в том числе операции файловой системы, такие как копирование файлов, перемещать, удалять, добавлять и т. д. в транзакции. Однако этот API на самом деле является оберткой вокруг Транзакционные NTFS

Если это не решило вашу проблему, то, пожалуйста, оставьте комментарий, и я помогу Вам улучшить свое решение, пока ваша проблема не будет решена.

Овации,
АХ


Ehsan Sajjad

я видел это во время поиска, но подумал, что может быть более лучший подход, но я думаю, что сейчас мне нужно придерживаться этой библиотеки. Спасибо