当TransactionScope存在时,我可以阻止LINQ DataContext使用事务吗?

时间:2013-07-23 19:15:39

标签: linq transactionscope

我在模型控制器类中使用TransactionScope来协调几个较低级别的数据访问类。每个数据访问类都使用自己的LINQ DataContext,并且由于TransactionScope的魔力,如果存在一个,它们都会参与同一个事务。

在正常情况下,这是完美的,一切正常。但是,我添加了一个活动日志记录类,它可以写入的一个地方是数据库。不幸的是,它会自动获取TransactionScope,如果事务被回滚,那么所有日志条目也会回滚。

我检查了Transaction的{​​{1}}属性,并且按预期为空,所以我不知道如何告诉它忽略DataContext

1 个答案:

答案 0 :(得分:3)

在您的日志记录类中,将using(new datacontext())打包到:

using (var s = new TransactionScope(TransactionScopeOption.Suppress)) {

}