自定义实体如何存储业务数据

在做ObjectArx开发时,常会用到自定义实体。

在某些场景需要用到自定义实体存储业务数据,当业务数据比较大时(超过1M),对实体进行写操作会影响运行效率。此时就需要考虑其他方法。对于云产品而言首选数据库,本文讨论的是单机版。

CAD为每个实体提供了扩展词典,参照以下三个方法:

Acad::ErrorStatus createExtensionDictionary();
AcDbObjectId      extensionDictionary() const;
Acad::ErrorStatus releaseExtensionDictionary();

大致流程如下:

  1. 编写自定义对象(继承AcDbObject),存储业务数据。根据数据量大小,可以拆分成多个自定义对象
  2. 自定义对象提供GetGuid方法,作为词典的key,用于存储
  3. 新建实体时,通过createExtensionDictionary,将自定义对象存入AcDbDictionary中
  4. 提供Get方法获取数据
  5. 修改数据,通过extensionDictionary,获取对应的数据对象,进行修改。

注意事项:

由于扩展数据不是实体的数据,所以在进行修改时要调用扩展对象的assertWriteEnabled,否则撤销还原会出错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值