【问题标题】:how to Create a Transactionscope between saving a file and inserting a record in DB in C#如何在 C# 中保存文件和在 DB 中插入记录之间创建事务范围
【发布时间】:2011-09-25 23:33:11
【问题描述】:

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

【问题讨论】:

  • 贴一些你的代码,你到底是什么问题

标签: c# file-io transactions insert dependencies


【解决方案1】:

事务性 NTFS

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

MSDN link

Alpha FS 在 .NET 中提供事务 NTFS。 请参阅 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();
}

【讨论】:

  • 谢谢亲爱的pebrian27;在这个项目中,我正在进行,这对我来说不是必需的;但是在另一个项目中,我会尽快进行,您的帮助和代码示例对我非常有用,非常感谢,最好的问候。
【解决方案2】:
try
{
    // Start DB Transaction
    // Save To DAtabase code
    // Save To File Code
    // Commit DB Transaction
}
catch
{
    // Rollback DB Transaction
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多