Как создать транзакцию между сохранением файла и вставкой записи в БД в C # - PullRequest
2 голосов
/ 30 июня 2011

У меня проблема с сохранением файла и вставкой записи в БД в TransactionScope;Средства сохранения файла и вставки записи, должны зависеть вместе = или оба, или ни то, ни другое.Кто-нибудь может мне помочь, пожалуйста?

Ответы [ 2 ]

6 голосов
/ 30 июня 2011

Транзакционная NTFS

Одна из самых крутых частей транзакционной NTFS - это то, что она может работать с большим количеством других транзакционных технологий.Поскольку TxF использует новые функции Kernel Transaction Manager (KTM), а новый KTM может работать непосредственно с координатором распределенных транзакций Microsoft® (DTC), любая технология, которая может работать с DTC в качестве координатора транзакций, может использовать операции с транзакционными файлами внутриразовая транзакцияЭто означает, что теперь вы можете подключать транзакционные файловые операции в той же транзакции, что и SQL операции, вызовы веб-служб через WS-AtomicTransaction, службы Windows Communication Foundation через OleTransactionProtocol или даже транзакционные операции MSMQ.1007 *

ссылка MSDN

Alpha FS обеспечивает транзакцию NTFS в .NET.см. Alphaleonis.Win32.Filesystem.KernelTransaction (транзакция транзакции).Вы можете получить текущую транзакцию по Transaction.Current

using (TransactionScope ts = new TransactionScope(TransactionScopeOption.RequiresNew))
{
    //KernelTransaction is in AlphaFS
    KernelTransaction kt = new KernelTransaction(Transaction.Current);

    //Append "hello" to text file named "text.txt"
    Alphaleonis.Win32.Filesystem.File.WriteAllText(kt, "text.txt", "hello");

    //No text appended because exception will be thrown
    throw new Exception("oops");

    ts.Complete();
}
0 голосов
/ 30 июня 2011
try
{
    // Start DB Transaction
    // Save To DAtabase code
    // Save To File Code
    // Commit DB Transaction
}
catch
{
    // Rollback DB Transaction
}

Обратите внимание, что сначала следует указать последовательность БД, затем сохранить в файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...