OrchardCMS信息集和partrecord不同步

OrchardCMS信息集和partrecord不同步,orchardcms,Orchardcms,当使用ContentItemVersionRecord时,我发现我的partrecord(备份记录)和infoset记录不同步 该网站已开发使用动态表单和自定义零件记录,如 public class ParticipantPartRecord : ContentPartVersionRecord { public virtual string ParticipantId { get; set; } } public class ParticipantPart : ContentPart

当使用ContentItemVersionRecord时,我发现我的partrecord(备份记录)和infoset记录不同步

该网站已开发使用动态表单和自定义零件记录,如

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); } }
}
公共类ParticipantPartRecord:ContentPartVersionRecord
{
公共虚拟字符串ParticipantId{get;set;}
}
公共类参与者部分:内容部分,ITitleAspect
{
公共字符串参与者ID{
获取{return Retrieve(r=>r.ParticipantId);}
设置{Store(s=>s.ParticipantId,value);}
}
当通过DynamicForm更新记录时(我使用的是允许编辑的DynamicForms模块的fork,请参见第6163期),FormController将创建ContentItem的草稿,更新绑定,并发布ContentItem,这将更新ContentItemVersionRecord中的信息集记录,并且(我假设)触发备份记录的更新

我通过工作流更新了一些字段(因为它们是通过编程生成的,而不是表单上的用户设置)。当我更新这些记录时(在以前发布的草稿上,所以是最新版本),信息集会更新,但是备份记录似乎不会更新

由于大多数数据检索使用的是_contentManager.Get(id),我没有注意到这个问题,但是在对程序更新的记录使用_contentManager.Query.Where()时,我发现支持记录不再与Orchard_Framework_ContentItemVersionRecord中的信息集记录匹配

在工作流中以编程方式更新记录时,我使用的代码如下

var participant = workflowContext.Content.ContentItem.As<ParticipantPart>();
participant.ParticipantId = GenerateParticipantId();
var participant=workflowContext.Content.ContentItem.As();
ParticipantId=generateParticipandi();
这将更新ContentItemVersionRecord中的信息集记录,但备份记录似乎没有更新


我以前没有使用过VersionedRecords,我想知道是否需要创建草稿和发布以强制更新备份记录,或者是否需要设置处理程序中的某些内容来触发对备份记录的更新。

您是否解决过此问题?我也经历过类似的事情,但从未找到解决方案……不,我没有。由于其他SQLN+1问题,我不得不重新安排查询安排,在重构过程中,我不再直接查询记录,而是保留来自存储的数据。