App.Data.Update 当要更新的实体引用另一个实体时抛出对象引用错误

App.Data.Update throws object reference error when the entity to update has a reference to another entity

当我尝试保存实体中的更改时,我在使用 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); <-- Throws the error
}

FormElements 实体与另一个实体有 link 时,这看起来可能是个问题。当我创建一个仅包含名称(字符串)和订单(数字)作为字段的小样本并发送带有新订单号的 webApi post 时,它可以正常工作。

如何使用对其他实体的一个或多个引用来更新一个实体?

更新:使用

修复了问题
Data["Form"] = new List<Guid>() { guid }

当字段组的字段为空时,我发现了第二个问题。当我有一个空字段时,我得到相同的对象引用错误。

数据引用应该是 ID 指针 - int 或 guid,作为列表或数组。

因此,即使您指向 1,也要确保它是 [1]new List<int>() { 1 }new List<Guid>() { guid}

类似的东西。