我对事务范围有疑问,因为我想做一个事务操作,首先我执行一些 CRUD 操作(一个在数据库上插入和更新一些行的事务),我从整个事务(一个 XML )。
在我获得 XML 后,我将 XML 发送到我的客户公开的 Web 服务,以便与我的系统集成。
关键是,假设有一天我的客户暴露的 WS 由于其 IT 区域执行的每周或每月的支持任务而下降,所以我执行整个事情的每一刻它都执行 DB 操作,但当然它会抛出一个目前我尝试调用 WS 时出现异常。
在网上搜索后,我开始想到 Transaction Scope。我的数据访问层上的数据访问方法已经有一个 TransactionScope,我可以在其中执行插入、更新、删除等操作。
以下代码是我想尝试的:
public void ProcessSomething()
{
using (TransactionScope mainScope = new TransactionScope())
{
FooDAL dl = new FooDAL();
string message = dl.ProcessTransaction();
WSClientFoo client = new WSClientFoo();
client.SendTransactionMessage(message);
mainScope.Complete();
}
}
public class FooDAL
{
public string ProcessTransaction()
{
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions(){ IsolationLevel = IsolationLevel.ReadCommitted}))
{
///Do Insert, Update, Delete and According to the Operation Generates a message
scope.Complete();
}
return transactionMessage;
}
}
问题是,使用 TransactionScope 来处理我想做的事情是否正确?
非常感谢您的时间:)