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

待更新实体关联其他实体时App.Data.Update抛出对象引用错误

2sxc 关联实体更新对象引用错误解决方案

我在使用dynCode.App.Data.Update保存实体变更时遇到对象引用错误,已检查确认数据字典中的所有变量和元素均正常存在。
报错代码如下:

public void ProcessReOrder(string elementId, string order)
{
    var entityGuid = Guid.Parse(elementId);
    decimal orderNr = Convert.ToDecimal(order);
    var tabId = Dnn.Tab.TabID;
    var modId = Dnn.Module.ModuleID;
    var block = ToSic.Sxc.Dnn.Factory.CmsBlock(tabId, modId);
    var dynCode = ToSic.Sxc.Dnn.Factory.DynamicCode(block);
    var formElement = dynCode.AsList(dynCode.App.Data["FormElements"]).Where(x => x.EntityGuId == entityGuid).FirstOrDefault();
    var converter = new EntitiesToDictionary();
    var data = converter.Convert(AsEntity(formElement));
    data["Order"] = orderNr;
    dynCode.App.Data.Update(formElement.EntityId, data); // 此处抛出错误
}

问题仅在FormElements实体存在其他实体关联的场景下触发,测试仅包含name(字符串)和order(数字)字段的无关联简单实体时,通过webApi post提交新的ordernumber运行完全正常。

已验证的修复方案

  • 关联字段格式要求:更新包含关联实体的字段时,不能直接传递实体对象,需要传递关联实体的Guid列表,在原代码中新增以下代码即可解决报错:
Data["Form"] = new List<Guid>() { guid }
  • 额外注意事项:经测试,当实体的字段组存在空字段时,也会抛出相同的对象引用错误,开发时需提前做好空值校验处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:48:03