< 上一课 | 下一课 >

保存更改

将更改落实到数据库是一个两步骤过程:先验证已更改或创建的记录,然后落实更改。

创建或编辑记录后,执行以下步骤,将更改落实到数据库:

  1. 通过调用 Entity 对象的 Validate 方法来验证记录中的数据。该方法会返回任何验证错误,因此您可以在尝试保存更改之前纠正这些错误。
  2. 调用 Entity 对象的 Commit 方法。该方法将更改写入数据库,结束当前操作,并检入该记录以使其不可编辑。

Validate 方法运行模式的验证脚本,并返回包含任何验证错误的字符串。如果该字符串不为空,那么您可以使用 GetInvalidFieldValues 方法返回包含错误数据的字段的列表。更正这些字段中的值后,您必须再次调用 Validate。如果 Validate 方法返回一个空字符串,那么表示无任何错误。

验证记录成功后,您需要通过调用对应 Entity 对象的 Commit 方法将更改落实到数据库。

还原更改:如果记录验证失败,您就无法将更改落实到数据库。最安全的解决方案是将记录还原到其原始状态并报告该错误。要还原记录,请调用 Entity 对象的 Revert 方法。

还原一组更改会将记录恢复到调用 EditEntity 之前的状态。如果您还原针对 BuildEntity 方法创建的 Entity 对象所做的更改,那么不会创建记录并且会丢弃该数据。不会循环使用与记录关联的标识。如果您还原由 BuildEntity 方法设置为可编辑的记录,那么会丢弃该记录但不会丢弃其可视标识,这样将来的记录就无法使用该标识。

以下是更改记录状态所执行步骤的示例:
  • 通过使用 EditEntity($Entity, action-name) 方法开始操作。
  • 修改字段值并检查字段级别的有效性。
  • 验证记录的状态(使用 Validate 方法)。
  • 如果没有任何错误,那么落实更改(使用 Commit 方法)。
  • 要取消操作,请使用 Revert 方法。

示例

# Modify the record and then commit the changes. 
$entityObj = $sessionobj->GetEntity("defect","BUGID00000042"); 
$sessionObj->EditEntity($entityobj,"modify"); 

# Modify the entity object 
# Your code should also check for exceptions 
$status = $entityObj->Validate(); 
if ($status == ""){
     $status = $entityObj->Commit();
     if ($status == ""){
         # successful commit
      } 
     else {
           # check error message
          } 

} else {
       $entityObj->Revert();
      } 
# The entity object is no longer editable.
< 上一课 | 下一课 >

反馈