4

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

Item newItem = parentItem.Add("NameOfNewItem", template);

然后编辑该项目。

然后保存该项目。

如果中间发生错误,在parentItem.Add指令之后,您的新项目上的字段不会保存,但子项目已创建并放置在内容树中,所以我们在内容树中有一个不完整的项目(真的错了) .

无论如何要在这条线上插入一个项目吗?

  1. 创建一个项目
  2. 填充项目
  3. 最后,将填充的项目添加到内容树中。

换句话说,有没有办法把parentItem.Add指令放在整个过程的最后?

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

4

2 回答 2

2

开箱即用,我认为不支持交易。这里有一篇关于 Sitecore 和 Item 事务的好文章,它实现了类似于 Unit of Work 的方法来给出对项目的原子操作的近似值。

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

public virtual DataProviderTransaction CreateTransaction();

Declaring Type: Sitecore.Data.DataProviders.Sql.SqlDataApi 
Assembly: Sitecore.Kernel, Version=6.0.0.0 
于 2012-09-29T07:10:03.043 回答
1

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

Sitecore 6 不支持此功能。有人提到(几年前)Sitecore 7 将支持事务。

于 2012-09-27T16:12:09.617 回答