C# sitecore插入项目数据完整性
在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
Item newItem = parentItem.Add("NameOfNewItem", template);
然后编辑该项
然后保存项目
如果在中间发生错误,在
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下创建了一个项目作为该项目的子项,那么拒绝或取消将停止创建该项目,但它似乎不会。