C# sitecore插入项目数据完整性

C# sitecore插入项目数据完整性,c#,asp.net,transactions,sitecore,sitecore6,C#,Asp.net,Transactions,Sitecore,Sitecore6,在Sitecore中插入项目时,使用如下代码: Item newItem = parentItem.Add("NameOfNewItem", template); 然后编辑该项 然后保存项目 如果在中间发生错误,在PalTime.Addiaby/Cuth>指令之后,新项目中的字段不会被保存,但是子项被创建并放置在内容树中,因此在内容树中有一个不完整的项(真的错了)。 是否仍要在此行中插入项目 创建一个项目 填充项目 最后,将填充的项添加到内容树中 换句话说,有没有办法将parentItem.A

在Sitecore中插入项目时,使用如下代码:

Item newItem = parentItem.Add("NameOfNewItem", template);
然后编辑该项

然后保存项目

如果在中间发生错误,在PalTime.Addiaby/Cuth>指令之后,新项目中的字段不会被保存,但是子项被创建并放置在内容树中,因此在内容树中有一个不完整的项(真的错了)。 是否仍要在此行中插入项目

  • 创建一个项目
  • 填充项目
  • 最后,将填充的项添加到内容树中
  • 换句话说,有没有办法将
    parentItem.Add
    指令放在整个过程的末尾


    这确实有助于提高数据完整性。

    您基本上是在寻求一种使用事务创建项目的方法


    Sitecore 6不支持这一点。有人提到(几年前)Sitecore 7将支持事务。

    开箱即用我认为不支持事务。有一篇关于Sitecore和Item transactions的好文章,它实现了一种类似于工作单元的方法,以提供对项目的原子操作的近似值

    Sitecore内核程序集在内部为需要它的操作提供事务支持。API似乎不公开此功能或不允许访问数据库连接

    public virtual DataProviderTransaction CreateTransaction();
    
    Declaring Type: Sitecore.Data.DataProviders.Sql.SqlDataApi 
    Assembly: Sitecore.Kernel, Version=6.0.0.0 
    

    执行
    item.Editing.BeginEdit();/item.Editing.RejectChanges();/item.Editing.CancelEdit();/item.Editing.EndEdit()方法不提供此功能?Stephen,这些方法将允许您退出项目编辑,但如果您
    拒绝
    取消
    更改,则不会删除项目。eloycm正在寻找一种方法来避免创建不完整的项目。谢谢Sean,我不确定如果您在BeginEdit下创建了一个项目作为该项目的子项,那么拒绝或取消将停止创建该项目,但它似乎不会。