我想在分布式事务中工作,提交它,然后能够读取结果。类似的东西:
using( var ts = new TransactionScope() )
{
do work on connection A
do work on connection B
ts.Complete();
}
read back work on A
read back work on B
这不能始终如一地工作,因为一旦所有资源都表示他们将提交(第2阶段的开始),而不是他们已经提交(第2阶段结束)并且提交发生在不同的线程上,TransactionScope就会结束
有没有办法强制提交同步?或者我应该使用其他一些模式来回读结果?
答案 0 :(得分:1)
通常情况下,我希望这可以工作,因为在提交(或回滚)之前应该阻止它。您是否正在使用锁定避免机制(nolock等)?你总是可以在另一个Serializable事务中读取(即第二个TransactionScope
) - 这应该确保读取为真。