You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Acumatica中MarkUpdated与Update方法的区别是什么?

Acumatica中MarkUpdated与Update方法的区别

在Acumatica的缓存操作逻辑里,这两个方法的核心差异在于操作行为和触发的逻辑范围:

Update方法

  • 直接替换缓存中对应类型的目标实体记录,同时会触发字段级的验证规则(比如PXDefault、PXDBDefault这类属性的逻辑),以及该实体的FieldUpdated事件。
  • 执行后,缓存内的实体状态会被标记为“已更新”,还会触发关联的业务联动逻辑(比如关联实体的自动更新)。
  • 如果传入的实体对象不在缓存中,Update会自动把它添加到缓存里,相当于执行了插入操作。

MarkUpdated方法

  • 仅做一件事:标记缓存中已存在的实体为“已更新”状态,不会替换实体对象本身,也不会触发任何字段验证或FieldUpdated事件。
  • 适用场景:当你已经手动修改了缓存内实体的属性值,只需要告知系统该实体有变更,后续保存时要写入数据库,不需要额外触发验证或事件逻辑的时候用它。
  • 如果传入的实体不在缓存里,MarkUpdated不会执行任何操作,也不会新增记录到缓存。

举个实际场景:
要是你已经通过Base.Caches[typeof(PX.Objects.CR.Standalone.Location)].Get()拿到缓存里的Location实体,直接修改了它的地址字段,这时候调用MarkUpdated(tierslocation)就足够标记它需要保存;但如果是从外部构造了一个新的Location对象,想要替换缓存里的现有记录,就得用Update(tierslocation),同时会触发该实体的验证和相关事件。

内容的提问来源于stack exchange,提问作者Xavier LARTEM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:05:17