gpt4 book ai didi

c# - C# 中的最小起订量事务范围

转载 作者:太空狗 更新时间:2023-10-30 01:02:00 27 4
gpt4 key购买 nike

是否有任何方法可以最小化事务范围以确保在流程中调用提交、完成或回滚操作?

鉴于此功能:

public void DoSomething(int param)
{
using (TransactionScope transactionScope = new TransactionScope())
{
factory.DoSomething(param);
factory.DoSomethingElse(param);

transactionScope.Complete();
}
}

有什么方法可以通过 IDisposable 接口(interface)调用 Verify 函数吗?它似乎只包含一个 Dispose 函数,我想测试 Commit 或 Rollback。

谢谢

最佳答案

TransactionScope是密封类,仅派生自 IDisposable 接口(interface)。正如我所考虑的,您需要为 TransactionScope 和接口(interface)创建自己的包装类,以便您可以使用和模拟它。

class TransScopeWrapper : ITransScope, IDisposable
{
private TransactionScope scope;

public TransScopeWrapper()
{
scope = new TransactionScope();
}

public void Dispose()
{
scope.Dispose();
}
public void Complete()
{
scope.Complete();
}

public void Rollback()
{
...
}
}


internal interface ITransScope
{
void Complete();
void Rollback();
}

您还需要以某种方式注入(inject) ITransScope 模拟。我会按照以下方式进行

public void DoSomething(int param)
{
using (TransScopeWrapper transactionScope = new TransScopeWrapper ())
{
DoSomething(param, transactionScope);
}
}

internal void DoSomething(int param, ITransScope transaction)
{
factory.DoSomething(param);
factory.DoSomethingElse(param);

transaction.Complete();
}

现在您可以测试模拟 ITransScopeDoSomething(int param, ITransScope transaction) 方法。

关于c# - C# 中的最小起订量事务范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36059017/

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