29

只是想知道,如果我想创建一个做某事的类并且我希望能够在 TransactionScope 中使用,我需要实现什么?

那就是:我的班级需要知道它在事务中,但是如何在提交或回滚时收到通知?在回滚时,我将如何实际回滚?

我假设我的班级会有像“添加”、“更新”和“删除”这样只修改临时更改列表的方法,以及一个需要检测它是否在事务中并返回修改或未修改数据的方法“读取”因此,但是我需要一个以某种方式调用的方法 Commit/Rollback?

我会订阅 Transaction.TransactionCompleted 事件吗?如果是,如何避免多次订阅同一交易?

我注意到事务没有 ID,有没有办法管理/处理多个并发事务或嵌套事务?

System.Transactions的 MSDN 文档有很多内容,但它似乎是针对消费者而不是实现者的,所以我想知道是否有人有关于服务如何提供支持的良好资源(在网络上或在书中)交易?

让我们假设我的类没有已经支持事务并且能够“通过它”的底层存储。假设我的课程如下所示:

public class MyClass {
    private List<MyObject> _businessData;

    public void Create(Myobject data) { ... }
    public MyObject Read(string query) { ... }
    public void Update(Myobject data) { ... }
    public void Delete(Myobject data) { ... }
}
4

1 回答 1

17

本文很好地概述了所需的内容。它更老了,但我相信这一切仍然适用。

总结这篇文章,你需要调用TransactionEnlist类的方法之一,传入.IEnlistmentNotification

于 2011-03-10T21:03:10.780 回答