Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建使用TransactionScope的类?_C#_.net_.net 4.0_Transactions_System.transactions - Fatal编程技术网

C# 如何创建使用TransactionScope的类?

C# 如何创建使用TransactionScope的类?,c#,.net,.net-4.0,transactions,system.transactions,C#,.net,.net 4.0,Transactions,System.transactions,只是想知道,如果我想创建一个做一些事情的类,并且我想能够在TransactionScope中使用,我需要实现什么 也就是说:我的类需要知道它在一个事务中,但是如何在提交或回滚时得到通知呢?在回滚时,我将如何实际回滚 我假设我的类会有像“Add”、“Update”和“Delete”这样的方法,它们只修改临时的更改列表,还有一个方法“Read”,它需要检测它是否在事务中,并相应地返回修改或未修改的数据,但是我需要一个方法Commit/Rollback,它会以某种方式被调用吗 我是否要订阅Transa

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

也就是说:我的类需要知道它在一个事务中,但是如何在提交或回滚时得到通知呢?在回滚时,我将如何实际回滚

我假设我的类会有像“Add”、“Update”和“Delete”这样的方法,它们只修改临时的更改列表,还有一个方法“Read”,它需要检测它是否在事务中,并相应地返回修改或未修改的数据,但是我需要一个方法Commit/Rollback,它会以某种方式被调用吗

我是否要订阅Transaction.TransactionCompleted事件?如果是,如何避免对同一事务进行多个订阅

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

的MSDN文档有很多内容,但它似乎是针对消费者而不是实现者的,所以我想知道是否有人(在web上或书中)有关于服务如何为事务提供支持的好来源

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

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) { ... }
}
公共类MyClass{
私有列表(businessData),;
公共void创建(Myobject数据){…}
公共MyObject读取(字符串查询){…}
公共无效更新(Myobject数据){…}
公共无效删除(Myobject数据){…}
}
对所需内容有很好的概述。它更老了,但我相信它仍然适用


为了总结本文,您需要调用类上的一个
登记
方法,传入
IEnlistmentNotification

的实现,如果有人想知道,那就是link#4 google“参与System.Transaction”谢谢。这篇文章是一篇很好的概述,但不是很深入(例如,如果我支持多个并发事务,我如何知道提交了哪个事务)。但是ResourceManager作为一个关键词帮助我找到了类似的文章来填补空白。