使用system_parent_id = null中的API结果创建动态内容记录

时间:2017-08-24 08:32:33

标签: sitefinity sitefinity-dynamic-content-types

我迫切希望得到答案。我使用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方法不会这样做。为什么?

1 个答案:

答案 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();