SQLConnection不实现IEnlistmentNotification

时间:2013-01-27 20:37:18

标签: .net sql vb.net ado.net transactions

我试图了解如何确保仅在提交事务时将日志条目输入到文件系统中。请参阅下面的代码。

Using (scope As TransactionScope = new TransactionScope()) 
    'write log log file (line 2)'
    scope.complete 
End Using

在事务范围完成之前写入日志文件的那一刻。

我已阅读有关IEnlistmentNotification界面的信息。我知道SQLConnection类允许事务和分布式事务。因此,我希望这个类能够实现IEnlistmentNotification,但事实并非如此。为什么不呢?

1 个答案:

答案 0 :(得分:2)

资源管理器使用

IEnlistmentNotification来参与事务,但它不是由SQL连接或事务实现的。

如果您实现自己的事务资源管理器,您将实现该接口并使用transactions enlistment methods EnlistDurableEnlistVolatile之一通知系统您要参与此事务。从此时起,您将收到对该界面的调用,该调用允许您对事务的状态做出反应并对其进行影响。

如果要以事务方式修改文件,则必须为此目的实现或查找资源管理器。该资源管理器将实施IEnlistmentNotification并通过上述登记方法参与交易。