从c#TransactionScope处理delphi DLL更改

从c#TransactionScope处理delphi DLL更改,c#,delphi,dll,dispose,transactionscope,C#,Delphi,Dll,Dispose,Transactionscope,我有一个Delphi DLL,它可以打开与数据库的连接,进行一些更改,并在一切正常的情况下提交更改 DelphiDLLMethod("testingParameter"); 我想从c#项目调用DLL。在这个项目中,我想对同一个数据库进行一些更改,但如果出现故障,我想回滚所有更改、来自代码的更改和Delphi DLL的更改 using (TransactionScope txn = new TransactionScope()) { try { result =

我有一个Delphi DLL,它可以打开与数据库的连接,进行一些更改,并在一切正常的情况下提交更改

DelphiDLLMethod("testingParameter");
我想从c#项目调用DLL。在这个项目中,我想对同一个数据库进行一些更改,但如果出现故障,我想回滚所有更改、来自代码的更改和Delphi DLL的更改

using (TransactionScope txn = new TransactionScope())
{
    try
    {
        result = DLLMethod("testingParameter");
        MakeSomeDatabaseChangesFromThisProject();

        txn.Complete();
    }
    catch
    {
        txn.Dispose();
    }
}

我正在使用TransactionScope和Dispose方法进行测试,我想证明,如果我的代码中出现错误,更改将被处理。但是DLL中的更改总是提交的。

除非Delphi库明确提供了处理它创建的事务(如果有)的机制,否则您不能,因为它将与外部(C#)端隔离。

您的库需要支持事务。没有。你不能从外面移植。听起来你应该把所有的代码移植到C。