我迫切希望得到答案。我使用Sitefinity API为父项创建子项。 (这些是动态模块中的动态内容类型)
在设置属性结束时,我执行以下操作:
historicDataEntry.SetWorkflowStatus(dynamicModuleManager.Provider.ApplicationName, "Published");
dynamicModuleManager.Lifecycle.Publish(historicDataEntry);
historicDataEntry.SetParent(GetFundIDToUse(), etfType.FullName);
dynamicModuleManager.SaveChanges();
结果是sf_dynamic_content表中的两条记录是正确的,但是由于某种原因,第二条记录的system_parent_id为null,即使它获得值visible = 1和status = 2。
好像我在这个过程中遗漏了一些东西,因为当创建Live记录时,即使Master记录正确引用了Parent ID,它也不会复制parent_id。
如果我进入管理界面,打开我创建的记录并单击发布,然后正确复制父ID,但API方法不会这样做。为什么?
答案 0 :(得分:1)
在设置工作流状态之前,您应该在调用Publish之前设置父级。
以下是示例代码:
var parentMasterId = Id_of_the_parent_item;
// type is the full name of the dynamic module
string resolvedType = TypeResolutionService.ResolveType(type);
// create the child item
var itemToCreate = manager.CreateDataItem(resolvedType);
// set some other properties of the child, like Title, etc.
// set the parent of the child
itemToCreate.SetParent(parentMasterId, "full_name_of_the_parent_type");
itemToCreate.SetWorkflowStatus(manager.Provider.ApplicationName, "Published");
manager.Lifecycle.Publish(itemToCreate);
manager.SaveChanges();