transactionscope报“此操作对该事务的状态无效”问题
一,可能出现事务时间过短造成的问题,这时我们需要延长时间:如下代码
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(6000000000))) { //保存内容 scope.Complete(); }
二,可能是由于你调用的方法问题,由于两个方法操作了不同的数据库,这时你就需要事务内嵌,TransactionScopeOption.RequiresNew这个是重点,代码如下
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { Event en = new English(); //这里执行一个操作,读取一个数据库的数据如(DB1) en.Say(); using (TransactionScope scope2 = new TransactionScope(TransactionScopeOption.RequiresNew)) { Event ch = new Chinese(); //这里执行一个操作,读取第二个数据库的数据(DB2) ch.Say(); scope2.Complete(); } scope.Complete(); }