我在使用ContentItemVersionRecord时发现我的partrecord(支持记录)和信息集记录正在同步。
该网站是使用动态表单和自定义部件记录开发的,例如......
public class ParticipantPartRecord : ContentPartVersionRecord
{
public virtual string ParticipantId { get; set; }
}
public class ParticipantPart : ContentPart<ParticipantPartRecord>, ITitleAspect
{
public string ParticipantId {
get { return Retrieve(r => r.ParticipantId); }
set { Store(s => s.ParticipantId, value); } }
}
更新时(我使用允许编辑的动态表单模块的分支 - 请参阅问题6163)通过DynamicForm创建记录,FormController创建ContentItem的草稿,更新绑定,并发布ContentItem,它更新了ContentItemVersionRecord中的信息集记录,并且(我假设)触发了后备记录的更新。
我通过工作流程更新了一些字段(因为它们是以编程方式生成的,而不是在表单上设置的用户)。当我更新这些记录时(在之前发布的草案上,所以最新版本),信息集更新,但是支持记录似乎没有。
由于大多数数据检索都使用_contentManager.Get(id),我没有注意到这个问题,但是当在编程更新的记录上使用_contentManager.Query.Where()时,我发现支持记录没有在Orchard_Framework_ContentItemVersionRecord
中更长时间匹配InfoSet记录在工作流程中以编程方式更新记录时,我使用
之类的代码var participant = workflowContext.Content.ContentItem.As<ParticipantPart>();
participant.ParticipantId = GenerateParticipantId();
这会更新ContentItemVersionRecord中的InfoSet记录,但后备记录似乎没有更新。
之前我还没有使用过VersionedRecords,我想知道我是否需要创建草稿,并且发布以强制更新后备记录,或者Handler中是否有需要设置的内容触发对备份记录的更新。