Eplan API Transactions

一、概述

  • “事务”这一术语指的是在 EPLAN 项目数据库中构成一个工作单元的一系列操作。这些操作必须全部一起执行,不能单独执行任何一个。这种分组方式能够确保数据的完整性和一致性,即便在系统出现故障的情况下也是如此。例如:
using (Transaction oTransaction = new TransactionManager().CreateTransaction())
{
     oFunction1.Name = "=+-NewTestFunctionName_1";
     oFunction2.Name = "=+-NewTestFunctionName_2";
     oTransaction.Commit();
}
  • 因此,如果在调用“Commit()”之前代码的执行就被中断了,那么“Name”属性的值将保持不变。

二、嵌套 API 交易

  • 在 API 中也可以嵌套多个事务。例如:
oFunction.Name = "oFunction0";
using (Transaction oTransaction1 = new TransactionManager().CreateTransaction())
{
     using(Transaction oTransaction2 = new TransactionManager().CreateTransaction())
     {
          oFunction.Name = "Function2";
          oTransaction2.Commit();
     }
     Console.Writeline(oFunction.Name) // Will be "oFunction2" returned,
     oFunction.Name = "Function1";
     Console.Writeline(oFunction.Name) // Will be "oFunction1" returned,
}
Console.Writeline(oFunction.Name) // Will be "oFunction0" returned, because outer transaction oTransaction1 wasn't committed

在这种情况下,内部事务会被视为外部事务的操作之一。

三、内部 EPLAN 和 API 交易

  • 我们区分了两种类型的交易:
  1. API 交易 - 它们可以通过显式或隐式的方式从 API 中开启。显式开启是通过从“交易管理器”创建“交易”对象来实现的:
Transaction oTransaction = new TransactionManager().CreateTransaction();
  • 隐式打开是通过某些 EPLAN 操作(如创建新对象、更改属性)来创建相同的“事务”对象实现的,这种方式对于 API 用户来说是不可见的。
  1. EPLAN 内部交易 - 它们是在 EPLAN 框架内部启动的,因此其开启和关闭是自动完成的。

四、同时使用 API 交易和内部交易

同时使用 API 交易和内部交易可能会引发问题。因此,请遵循以下规则以避免此类情况发生:

1、内部交易中的 API 交易操作

在这里插入图片描述

  • API 事务总是可以嵌套在内部事务中开启的。API 开发者可以通过以下属性来检查 API 事务是否已开启:
TransactionManager::IsTransactionRunning
  • 一次 API 事务的提交不会对数据库产生任何更改,并且在内部事务终止之前不会被保存到数据库中。而中止一个 API 事务并不会中止内部事务,而是会抛出异常,因为内部事务正在运行,无法被中止。
2、API 交易内部的一项交易操作

在这里插入图片描述

  • 内部事务可以始终在 API 事务中开启。API 开发者可以通过以下属性来检查是否已开启内部事务:
TransactionManager::IsEplanTransactionRunning
  • 如果要开启内部事务,则 API 事务将被提交。如果再次关闭内部事务(使用“Abort”或“Commit”操作),那么 API 事务将重新启动。API 事务类还具有一个属性,用于指示在 API 事务中是否曾开启和关闭过内部事务:
Transaction::IsImplicitEplanTransactionCommited
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值