gpt4 book ai didi

c# - 如何创建与 TransactionScope 一起使用的类?

转载 作者:IT王子 更新时间:2023-10-29 04:14:57 28 4
gpt4 key购买 nike

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

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

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

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

我注意到交易没有 ID,有没有办法管理/兼顾多个并发交易或嵌套交易?

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

让我们假设我的类没有已经支持事务并且能够“传递它”的底层存储。假设我的类(class)是这样的:

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) { ... }
}

最佳答案

This article对需要什么有一个很好的概述。它比较旧,但我相信这一切仍然适用。

为了总结这篇文章,您需要调用 Transaction 上的 Enlist 方法之一。类,传入 IEnlistmentNotification 的实现。

关于c# - 如何创建与 TransactionScope 一起使用的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5265841/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com