如何在C#中在保存文件和在DB中插入记录之间创建Transactionscope

本文关键字:之间 记录 创建 Transactionscope 插入 保存文件 DB | 更新日期: 2023-09-27 18:00:41

我有一个问题,在TransactionScope中保存文件并在DB中插入记录;意味着保存文件和插入记录,必须同时依赖=或两者都依赖或两者都不依赖。有人能帮我吗?

如何在C#中在保存文件和在DB中插入记录之间创建Transactionscope

事务性NTFS

最酷的部分之一事务性NTFS是指它可以工作与大量其他事务技术。因为TxF使用新的内核事务Manager(KTM)功能,并且因为新的KTM可以直接与Microsoft®分布式事务协调员(DTC),任何可以将DTC作为事务处理协调器可以使用事务处理文件单个内的操作交易这意味着你可以现在登记事务处理文件操作在与SQL相同的事务中操作,Web服务调用WS-AtomicTransaction,WindowsCommunication Foundation通过OleTransactionProtocol,甚至事务MSMQ操作。

MSDN链接

Alpha FS在.NET中提供事务NTFS。请参阅Alphaleonis.Win32.Filesystem.KernelTransaction(事务处理)。您可以通过交易获取当前交易。当前

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();
}
try
{
    // Start DB Transaction
    // Save To DAtabase code
    // Save To File Code
    // Commit DB Transaction
}
catch
{
    // Rollback DB Transaction
}

请注意,DB的顺序应该是第一个,然后保存到文件中。